====== Dispatcher, клавиатуры ====== ===== Д/З ===== ==== Reading assignment (прочитать и понять) ==== * Паттерн Observer (Наблюдатель) https://refactoring.guru/ru/design-patterns/observer (нужен VPN) * [[https://docs.python.org/3/library/abc.html|abc]] — Abstract Base Classes ==== Практика (для зачета) ==== Дорабатываем бот из прошлого Д/з (новый создавать не нужно). ===Требуется реализовать модули=== - ''dispatcher.py'', содержащий класс ''Dispatcher'' - ''long_polling.pu'', содержащий функцию ''start_long_polling()''. Эта функция принимает на вход объект типа ''Dispatcher'' и запускает бесконечный цикл получения апдейтов от Telegram. Так же контролирует обновление ''offset'' для ''getUpdates''. - ''handler.py'' с базовым классом ''Handler'' (интерфейс ABC) - ''handlers/message_text_echo.py'' с классом ''MessageTextEcho(Handler)'', который обрабатывает текстовые апдейты. Поведение — отправить эхо сообщение (как в прошлом Д/з). - ''handlers/database_logger.py'' с классом ''DatabaseLogger(Handler)'', который обрабатывает все входящие апдейты. Поведение — записать апдейт в таблицу ''telegram_updates'' (как в прошлом Д/з). **Важно**: данный хэндлер даёт сигнал диспетчеру на __продолжение__ обработки. - ''handlers/message_photo_echo.py'' с классом ''MessagePhotoEcho(Handler)'', который обрабатывает апдейты с фото. Поведение — отправить эхо сообщение с той же картинкой (отправить картинку с максимальным в байтах размером) - Внесите сопутствующие изменения в ''__main__.py'' и остальные файлы при необходимости. ===Процесс сдачи=== Свяжитесь в ТГ с [[https://t.me/olegsklyarov|преподавателем]] для выбора удобного времени сдачи. - (студент): напишите в ТГ [[https://t.me/olegsklyarov|преподавателю]] **одно** сообщение, содержащее текст: - ''Для сдачи Д/з Dispatcher, бот запущен'' - Ссылка на гит с исходным кодом бота - Ссылка на ваш бот - (преподаватель) отправляем вашему боту тестовые сообщения, проверяет что пришли эхо сообщения. - (преподаватель) пишем вам в ТГ личку запрос на скриншоты терминала с запущенным ботом и результат выполнения SQL запроса - (студент) сделать запрошенные скриншоты, отправить в личку преподавателю - (преподаватель) проверяет скриншоты, при необходимости задает дополнительные вопросы. - ... - (преподаватель) отправляет с ТГ личку студенту сообщение "ФИО ✅ 4️⃣" - (студент) заходит [[chat-bots:Таблица успеваемости|на страницу успеваемости]] и проверяет корректность своей успеваемости.