====== Aiogram - ускоряем в разы разработку Telegram ботов ====== ===== Д/З ===== ==== Reading assignment (прочитать и понять) ==== Если ссылки с документацией aiogram не открываются, то используйте VPN или оффлайн PDF — {{ :chat-bots:docs-aiogram-dev-en-3.23.0.pdf |}} * [[https://docs.aiogram.dev/en/v3.23.0/dispatcher/long_polling.html|aiogram: Long Polling]] * [[https://docs.aiogram.dev/en/v3.23.0/dispatcher/dispatcher.html|aiogram: Dispatcher]] * [[https://docs.aiogram.dev/en/v3.23.0/dispatcher/router.html|aiogram: Router]] * [[https://docs.aiogram.dev/en/v3.23.0/dispatcher/filters/magic_filters.html|aiogram: Magic filters]] * [[https://docs.aiogram.dev/en/v3.23.0/dispatcher/dependency_injection.html|aiogram: Dependency injection]] * [[https://docs.aiogram.dev/en/v3.23.0/dispatcher/middlewares.html|aiogram: Middlewares]] * [[https://docs.aiogram.dev/en/v3.23.0/dispatcher/finite_state_machine/index.html|aiogram: FSM (Finite State Machine)]] ==== Практика (для зачета) ==== Реализовать простейший echo-бот с использованием aiogram - Используем свой github репозиторий, в котором делали предыдущие Д/з (Pizza Bot и т.д.) - Создаем новый git бранч c названием ''12-aiogram'', переключаем git на эту новую ветку - Удаляем все файлы и каталоги от Pizza Bot: domain, infrastructure, tests, handlers и т.п. Оставляем только структуру папок, Dockerfile, Makefile и т.п. - В requirements.txt добавляем aiogram, удаляем неиспользуемые библиотеки (например asyncpg, aiohttp) - Весь код echo бота реализуем в одном файле %%bot/__main__.py%% - Бот должен быть асинхронным (использовать asyncio), обновления получать при помощи Long Polling встроенный в aiogram. Использовать один Dispatcher для обработки событий и middleware. - Добавить обработчик для message.text → в ответ на этой событие, бот отвечает тем же текстом, что получил - Добавить обработчик для message.photo → в ответ бот отправляет ту же картинку, что получил - Добавить middleware для логирования в консоль тела всех без исключения updates. P.S. смотри пример реализации в видеозаписи с лекции. ===Процесс сдачи=== - (студент): напишите в ТГ [[https://t.me/olegsklyarov|преподавателю]] **одно** сообщение, содержащее текст: - ''Для сдачи Д/з aiogram'' - Ссылка на гит с исходным кодом бота, сразу на нужный git-бранч (''12-aiogram'') - (преподаватель) проверяет наличие зеленой галочки на гитхабе, делает код ревью, при необходимости задает дополнительные вопросы. - (преподаватель) отправляет с ТГ личку студенту сообщение "ФИО ✅ 🔟+2️⃣" - (студент) заходит [[chat-bots:Таблица успеваемости|на страницу успеваемости]] и проверяет корректность своей успеваемости.