WingiM / KTITS-Telegram-Bot

Timetable telegram bot. Used to parse XLSX files with timetables from the URL given and display the resulted timetable with UI. Also includes an administrator bot that is used to send messages to people in diffrenet groups or to everyone

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Бот-расписание

Перед началом

Для начала работы с ботом необходимо выполнить установку всех необходимых для работы бота модулей. Выполнить это можно с помощью команды:

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

About

Timetable telegram bot. Used to parse XLSX files with timetables from the URL given and display the resulted timetable with UI. Also includes an administrator bot that is used to send messages to people in diffrenet groups or to everyone


Languages

Language:Python 100.0%