kortukov / conference_bot

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Мобильный помощник для организации суперкомпьютерных конференций

Установка

Для работы необходим 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, при перезагрузке бота все состояния и переменные у всех пользователей сохраняются. С этим связаны особенности обновления програмы. См.ниже Обновление программы.

Парсинг docx-файла с программой конференции

Парсинг работает хорошо только с программой конференции вида 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.

About


Languages

Language:Python 100.0%