- PVSM.RU - https://www.pvsm.ru -

Как я написал удобного Telegram-бота для взаимодействия со школьным дневником

Когда я начал свой путь в парсинге, мне в голову сразу пришла идея написать клиент для удобного взаимодействия со школьным дневником. В последствии я решил оформить его в виде Telegram-бота.

Скриншот проделанных изменений

Скриншот проделанных изменений

Основные проблемы, возникающие во время использования оригинального электронного дневника, которые я постараюсь решить:

Проблема

Соотношение, %

Падение серверов при нагрузке (конец четвертей)

45,5

Отсутствие уведомлений

20,5

Сайт не адаптирован для мобильных устройств

20,5

Дизайн мобильного приложения

18,2

Отсутствие кастомизации интерфейса приложения/сайта (темная тема)

13,6

Защита данных/конфиденциальность

11,4

1. Выбор базы данных

В качестве базы данных для бота на первое время был выбран простой JSON файл, это решение обусловлено следующими параметрами:

  • Простота

  • Скорость и удобство разработки

  • Наглядность

  • Больше опыта работы

Однако, в будущем планируется переход на обычную базу данных (sqlite3 или PostgreSQL).

2. Парсинг дневника

Спарсить сам дневник оказалось достаточно просто: для успешного получения ответа не нужна даже подмена заголовков запроса (headers), нужна только авторизация (cookie).

На данный момент я переписал чужой проект, по работе с API дневника (barsapi), перевёл его на aiohttp, значительно ускорил скорость работы. В скором времени планирую перевести бота на использование этой библиотеки.

3. Выбор библиотеки для взаимодействия с Telegram-Bot-API

Бот написан на aiogram, т. к. у них понятная документация.

4. Уведомления

Официально уведомления как-будто бы есть... Но на деле (по крайней мере в моём регионе) они не функционируют.

Уведомления в боте реализованы "в лоб": раз в определенный промежуток времени бот запрашивает оценки с сервера, сравнивает их с оценками записанными в базу данных при предыдущем запросе. И в случае обнаружения изменений отправляет их пользователю в телеграмме.

Пример уведомления об изменении оценки в боте

Пример уведомления об изменении оценки в боте
Пример "умного" уведомления в боте

Пример "умного" уведомления в боте

Заключение

Пройдёмся по проблемам, указанным в начале:

  • Падение серверов при нагрузке (конец четвертей)

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

    Но это не принесёт большого смысла, т. к. учителя тоже не смогут войти и проставить оценки(

  • Отсутствие уведомлений

    Решено в полной мере.

  • Сайт не адаптирован для мобильных устройств

    Информация в боте отлично отображается как на компьютере, так и на телефоне.

  • Дизайн мобильного приложения и отсутствие кастомизации интерфейса приложения/сайта (темная тема)

    Пользователь сам в праве решить каким интерфейсом ему пользоваться, он может настроить тему в Telegram под себя или выбрать из большого количества готовых.

  • Защита данных/конфиденциальность

    Нельзя отследить куда уходят запросы (как в браузере через вкладку параметры для разработчиков) => перечень возможных атак существенно снижается;

Подведу небольшой итог, по проекту:

  • На данный момент в боте 7 пользователей(

  • Поднят с колен пакет для взаимодействия с API (barsapi)

  • Написан пакет для взаимодействия с API разговоров о важном (для раздела о классных часах), conversations-about-important-api

  • В репозитории на GitHub 3 звезды

Проект является некоммерческим (работает не ради дохода, сделан ради пользователей), вот ссылки:

Благодарю, за прочтение :-)

Автор: imalostshe

Источник [3]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/boty/415095

Ссылки в тексте:

[1] pars-diary: https://github.com/iamlostshe/pars-diary

[2] pars_diary_bot: https://t.me/pars_diary_bot

[3] Источник: https://habr.com/ru/articles/895486/?utm_source=habrahabr&utm_medium=rss&utm_campaign=895486