Устанавливаем и открываем скачанный проект (предварительно распаковав). Pycharm должен сам определить, каких инструментов и библиотек не хватает и установить их.
Файл config-bot-email.example.yml нужно скопировать в той же директории с именем config-bot-email.yml и заполнить конфиг своими данными (см. ниже).
Запускаем бота в Pycharm одновременным нажатием кнопок CTRL+SHIFT+F10, либо через ПКМ->Run в контекстном меню на открытом файле bot-email.py:
Консольный вариант:
# Клонируем репозиторий себе инструментами git, либо скачиваем ZIP:
git clone git@github.com:PVMezencev/bot-email.git &&cd bot-email/
pip install --upgrade pip
pip install --upgrade aiogram
pip install --upgrade beautifulsoup4
pip install --upgrade lxml
# Установить остальные требуемые пакеты.# Создаем файл конфигурации на основе шаблона, заполняем своими данными.
cp config-bot-email.example.yml config-bot-email.yml
# Запустим бота.
python bot-email.py
Настройки:
imap - секция настроек сервера IMAP
host - строка укажите адрес сервера
port - целое число укажите порт сервера
login - строка укажите адрес почты
password - строка укажите пароль от почты (яндекс требует специальный пароль для приложений, тот что от веб - не подходит)
inbox - строка папка входящей почты (по умолчанию для всех почтовиков папку "Входящие" = INBOX), если папка вложенная (входящие->readable), то нужно указывать от корневой папки "INBOX|readable"
archive - строка папка для хранения обработанных писем, если указать, то скрипт будет пытаться скопировать письмо в неё
read_only - логический True или False, если True читаем только те, что ещё не прочитанные, после прочтения отмечаем, как прочитанные. False - читаем все, после прочтения удаляем
is_cycle - логический True или False, если True, то проверка почты запускается в бесконечном цикле, каждые 60 сек, если False, то скрипт завершается после одной попытки проверки. False удобно, если будем запускать скрипт внешним расписанием, например, по крону
start_bot - логический True или False, если True, то запуститься бот и будет отвечать на команды, если False, то будет только пересылать почту
bot - строка укажите токен бота
my_telegram_id - целое число укажите свой идентификатор телеграм
attaches_save_to - строка путь к каталогу для сохранения вложений
filter_ext - строка для сохранения вложений можно указать конкретное расширение файлов (например, xlsx)
backup_save_to - строка путь к каталогу для полной копии писем (каждое по отдельности в формате eml)
Создание токена для бота:
Находим в телеграм через поиск бота-папу - @BotFather
Начинаем с ним диалог - нажать "Запустить"
Бот ответит полной справкой по своим командам:
Отправляем боту команду /newbot - новый бот, бот-папа спросит в ответ, как мы его хотим назвать:
Назовём BotEmailReader, особых требований к имени нет, но называйте так, чтоб отражалась суть его задач. Это имя будет отображаться, как имя контакта.
Далее бот-папа спрашивает, какую ссылку хотим мы присвоить боту:
Тут следует придерживаться шаблона - ссылка должна заканчиваться на "bot". Укажем best_email_reader_bot. Если таких ссылок ещё не присвоено ни одному боту, и шаблон ссылки подходящий, то бот-папа ответит сообщением со всей информацией по боту:
Нас интересует токен - вот он 6028500356:AAHr7XaIw1fPWhfbWmtKn-lgdk-zG2xziGw.
Так же, в последствии, у бота-папы можно попросить показать всех своих ботов командой /mybots (к слову, можно создать не более 20 ботов с одного аккаунта, а всевозможные команды бота-папы отображены в меню)
Своих ботов можно изменять (все, кроме ссылки): сбрасывать токен, установить аватар, задать набор команд и т.д.. Так же, своего бота можно удалить. (Демонстрационный бот удален)
Как узнать свой идентификатор в Телеграм:
Этим ботом - запустить его, запросить команду /me.
Поискать других чужих ботов, которые покажут ваш идентификатор.
Идентификатор реального пользователя - целое положительное число, например 428819662. Идентификатор группы или канала - целое отрицательное число -428819662.
Для того, чтоб бот отправлял сообщения в группу - его нужно добавить в группу, для канала - бот должне быть подписан на канал и быть администратором. В файле конфигурации идентификатор нужно указывать как есть.