Найти тему
Лёша Маметьев

Пишем бота телеграм для школы

Оглавление

Мне необходимо было написать телеграм бота для школы, который будет сообщать детям о дедлайнах по онлайн обучению. Для этого я буду использовать ЯП Python и библиотеку PyTelegramBot.

Техническое задания

Необходимо что бы бот получал информацию с электронного дневника и Google Classroom и по команде отправлял ученику. Так же необходима возможность получения информации о предстоящих онлайн уроках.

Реализация идеи

На сервере будут запущены 2 программы. Одна планировщиком будет запускаться каждые 3 часа и выгружать в текстовый файл информацию о дедлайнах. Для хранения информации я использую XML файл с такой структурой: (согласен что это очень топорно, но одной из моих задач, как учителя было объяснить детям принцип его работы)

Каждый предмет храниться в теге <el>, у каждого предмета есть подпункт <task> в котором хранится информация об отдельном задании.
Каждый предмет храниться в теге <el>, у каждого предмета есть подпункт <task> в котором хранится информация об отдельном задании.

Аналогично хранится информация о будущих лекциях.

Для парсеринга информации с сайта и получения информации из файла я использую библиотеку BeautifulSoup.

-2

Таким образом для храниния информации мы используем массив в котором находятся словарики, в котором находится массив.... Да кажется довольно сложно, но если вникнуть, то все становится более - менее понятно:

-3

Сортировка заданий

Пишем процедуру которая возвращает список лекций, которые будет не больше чем через days дней. Для этого пробегаемся по основному и запоминаем название предмета (subject). Если по нему найдена информация, то добавляем его в ответ бота. А после этого добавляем список всех домашек по нему. Если прям вообще ничего не найдено, то возвращаем что дз нет.

-4

Аналогичным образом работает поиск лекций

Обработчик команд

1. При команде help бот выводит список команд. Довольно банальная вещь. Parse_mode поваляет использовать более простое форматирование текста в сообщениях.

-5

2. На команду /deadline бот должен ответить список домашней работы на ближайшую неделю (7 дней).

-6

В конце пишем команду, которая включает бота и указываем timeout, т.е время в течении которого от будет пытаться отвечать на запрос.

-7

Анализируем результат

-8

При запросе домашки бот выдаёт вот такой результат. Все названия предметов кликабельны, можно нажать и перейти в электронный дневник.

Информация об онлайн уроках выглядит таким образом. Все ссылки тоже кликабельны:

-9

В случае если лекций несколько он выводит их подряд, не сортируя по предмету. Это особо и не много, так как у детей обычно 2 -3 лекции в день

-10