Для работы необходим python3 Также нужно установить пакеты python-telegram-bot и telegram Сделать это проще всего так: pip3 install python-telegram-bot pip3 install telegram
Чтобы воспользоваться ботом ему нужно завести специальный аккаунт. Это делается внутри Telegram с помощью бота @BotFather Надо воспользоваться командой /newbot, а затем прописать токен бота в код в переменную TOKEN Для того, чтобы бот выглядел прилично - стоит воспользоваться также командами: /setdescription и /setuserpic. Также можно воспользоваться командой /setcommands, чтобы бот сам предлагал доступные команды при наборе символа '/'
Если вы находитесь на территории России - советуем обратить внимание на переменную REQUEST_KWARGS и ключ proxy_url. Без них бот может работать с перебоями.
Файл bot.py содержит непосредственно код бота.
Бот умеет выдавать программу по времени и по секциям, в PDF-формате. Он позволяет отмечать заинтересовавшие секции и доклады и выставлять на них уведомления.
Бот работает на одном ConversationHandler. Все обработчики событий лежат в разных модулях в папке src/handlers.
В боте реализован picklepersistence, при перезагрузке бота все состояния и переменные у всех пользователей сохраняются. С этим связаны особенности обновления програмы. См.ниже Обновление программы.
Парсинг работает хорошо только с программой конференции вида 2019 года, если в ней будут изменения парсинг нужно будет переписывать. Также требуется ручная очистка docx файла и приведение его к точному виду, необходимому боту. Файл Program_example.docx содержит пример такого форматирования (укороченная версия программы).
Файл classes.py содержит все необходимые для чтения данных классы. Эти классы оттуда импортят другие файлы.
Файл read_data.py непосредственно читает и сохраняет программу. У него 3 режима работы:
- Вывод на stdout: python3 read_data.py
- Сохранение в json: python3 read_data.py json
- Сохранение в pickle: python3 read_data.py pickle
Путь к DOCX-файлу с программой сейчас прописан в код он вот такой: "../Program-2018_v4.docx". Это в начале main-а после проверки аргументов коммандной строки.
Файл test.py используется чтобы проверить сохранённые данные в json или в pickle. Такие режимы работы:
- Вывод из json на stdout: python3 test.py json
- Вывод из pickle на stdout: python3 test.py pickle
read_data.py создаёт файлы в родительском каталоге event_list.json или event_list.pickle. JSON можно читать и править в текстовом редакторе, для этого в него и сохраняем.
Файл jsontopickle.py сохраняет то что было в event_list.json в файл event_list.pickle.
Рассчитывается, что бот будет брать данные из Pickle-а.
Скрипт program_update.py используется для обновления программы конференции. Он парсит программу, а также открывает файл bot_persistence.pickle и меняет все в нем. Он также использует файл global_marked_list.pickle. О нем ниже.
Все отмеченные доклады и уведомления при их добавлении сохраняются классом DataKeeper в пикл файл. Это нужно, чтобы при смене программы у людей оставались отмеченными те доклады, которые были раньше, если они все еще есть в новой программе. Эта механика реализована в методах DataKeeper, которые вызываются для пользователя, когда он заходит в главное меню.
Скрипт notify_users.py используется для рассылки произвольных сообщений пользователям. Работает толькое если досутпен bot_persistence, потому что в нем лежит список user_id.