Для начала работы с ботом необходимо выполнить установку всех необходимых для работы бота модулей. Выполнить это можно с помощью команды:
pip install -r requirements.txt
Кроме того, нужно создать в директории проекта .env файл и открыть его в текстовом формате. Сюда нужно ввести следующие переменные:
- BOT_TOKEN - токен из Telegram для основного бота с расписанием
- ADMIN_BOT_TOKEN - токен админ-бота для учебной части
- ADMIN_PASSWORD - пароль, который должны вводить работники учебной части при входе в систему
Формат объявления переменной:
VARIABLE_NAME=VALUE
Запуск всей программы осуществляется через файл main.py, который автоматически запустит 3 процесса:
- bot.main - основной бот с расписанием
- admin_bot.main - админ-бот для учебной части
- scheduler.main - "сборщик данных", работающий в установленное время
Бот реализован с помощью различных модулей хранящихся в директории tools.
В данном модуле представлена работа админ-бота для рассылки сообщений по группам и курсам. При запуске программы в этом
модуле создается как сам админ-бот, так и отдельный экземпляр "бота-рассыльщика". Для начала работы пользователь должен
ввести команду /link
для привязки аккаунта по паролю из .env файла. Методы, оканчивающиеся на groups
отвечают за рассылку определенным группам, а, оканчивающиеся на courses
, соответственно, за рассылку по курсам.
В модуле представлен основной бот с расписанием для студентов и
учителей.Команды для учителей — аналоги команд для студентов, отличающиеся лишь тем, что оканчиваются буквой "t".
Аналогично с админ-ботом, пользователь должен привязать свой аккаунт к системе командой /link
Модуль, отвечающий за заполнение базы данных всеми необходимыми материалами. Метод parse() собирает с сайта КТИТС .xlsx файлы с расписанием и сохраняет их в директорию workbooks под названием:
rasp<номер курса>.xlsx
Метод main() запускает parse() на старте программы, а так же каждый день в 4:00 утра. parse() использует также вспомогательные модули из папки tools:
- excel - метод main (boolean параметр temp указывает методу, какие файлы проверять: временного расписания или постоянного) с помощью библиотеки openpyxl анализирует таблицу Excel, собирая с нее расписания для студентов и учителей. Кроме того автоматически происходит проверка временного расписания, и, если с последнего дня временного расписания прошло более одного дня, оно удаляется из базы данных.
- db_dispatcher - модуль помогает управлять всей базой данных с пользователями и расписаниями. Установка и обновление расписаний, проверка устаревших данных — все это происходит здесь