Данный бот предназначен для использования на оффлайн конференциях. Гостям мероприятия бот позволяет подписываться на конкретные выступления и таким образом формировать своё расписание. Модераторам бот позволяет отслеживать статусы спикеров и слушателей, отправляя им сообщения прямо в боте.
Раздел, посвященный тестированию, находится на другой странице
Структура для файла .env находится на странице
Структура базы данных описана на другой странице
В архитектуре бота есть различие только на модераторов и гостей. Соответственно, все методы, которые может вызывать спикер, будут находится в папке /telegram/core/guest, рядом с методами простого пользователя. Гость отличается от спикера только другим типом привязки к выступлению.
Основой для функционирования бота опредляет заранее загруженный конфиг. Для его загрузки в первый раз необходимо вручную в базе данных добавить токен. Затем пользователь вместо того, чтобы вводить почту, вводит кодовое слово ввести токен и проходит процедуру регистрации. Данный способ должен использоваться только для первого использования. В дальнейшем, чтобы добавить пользователя, нужно добавить его в конфиг. Про конфиг можно прочитать на странице
/telegram/core/keyboards/ содержит функции-генераторы для inline-клавиатур. Данные функции используются файлах папки /telegram/сore/handlers. Мы используем функции-генераторы, потому что в общем случае клавиатуры могут содержать данные, зависящие от конкретного момента времени, поэтому они должны быть динамически конфигурируемы.
/core/handlers/ Содержит все обработчики, которые вызываются на любые действия пользовтеля. Для подробной информации стоит перейти на страницу.
/core/utils Содержит парсер для загруженного csv конфига (подробнее на странице). Модуль, который отвечает за напоминания пользователям о начинающихся мероприятиях (подробнее). Также эта папка содержит шаблоны как для сообщений, так и для html страничек
/telegram/core/email_verificator.py отвечает за отправку сообщений по почте пользователям, а также за верификацию пользователей. Он отправляет письмо со ссылкой, в которой закодирован токен. Когда пользователь переходит по данной ссылке управление программы опять возвращается в данный модуль и происходит верификация. Верификация оканчивается тем, что в базе данных обновляется поле tg_chat_id и пользователю присваивается новый state.
/telegram/core/routes.py содержит http endpoint для подтвеждения верификации. Для верификации он вызывает функции из email_verificator.py
при запуске /core/init_db.py происходит инициализация создания таблиц в базе данных