
Рассмотрены практические подходы к созданию Telegram-ботов на языке Python с использованием фреймворка aiogram. Подробно описаны этапы разработки — от установки фреймворка и запуска бота до сложных сценариев взаимодействия с пользователем. Даны рекомендации по безопасному хранению токенов и других данных. Рассмотрены обработка сообщений, команд и аргументов, форматирование вывода, работа с, медиафайлами, кнопками и колбэками, структура проекта с применением роутеров, фильтров и мидлварей. Показано использование конечных автоматов (FSM) и сцен для пошаговых диалогов, работа в инлайн-режиме, отображение результатов, сбор статистики и подгрузка больших объемов данных. Приведены примеры интеграции платежей с Telegram Stars, проверки и возврата покупок, обработка ошибок и тестирование с помощью pytest.
Для разработчиков
Создавайте Telegram-боты на Python с помощью фреймворка aiogram!
Создавайте умные и полезные Telegram-боты на языке Python с помощью фреймворка aiogram! Эта книга проведет вас через все этапы разработки — от запуска первого бота до построения сложных диалоговых систем, интеграции платежей и тестирования.
Telegram-боты — это мощный инструмент автоматизации, взаимодействия с пользователями и даже ведения бизнеса. Благодаря фреймворку aiogram можно разрабатывать быстрые, надежные и гибкие боты, не вникая в избыточные детали кода на Python. Автор последовательно объясняет все ключевые аспекты: обработку текстовых сообщений и медиафайлов, создание кнопок разных типов, применение роутеров и мидлварей, реализацию сложных сценариев взаимодействия с пользователем, работу с инлайн-режимом и платежной системой Telegram Stars. Подробные примеры кода и практические советы помогут быстро перейти от теории к реальным проектам.
Эта книга — идеальный выбор для разработчиков, желающих освоить создание Telegram-ботов с нуля или вывести свои навыки на профессиональный уровень.
Вы узнаете, как:
- установить и настроить aiogram и запустить свой первый бот;
- безопасно хранить токены и другие чувствительные данные;
- обрабатывать текст, команды и аргументы;
- использовать кнопки, колбэки и фабрики колбэков;
- структурировать проект, применять роутеры и фильтры;
- писать и использовать мидлвари для обработки данных на лету;
- реализовать конечные автоматы (FSM) и сцены для сложных диалогов;
- работать с инлайн-режимом и собирать статистику запросов;
- подключить платежи с Telegram Stars;
- обрабатывать ошибки и тестировать боты с помощью pytest.
Книгу “Разработка Telegram-ботов на Python с нуля” можно купить в нашем интенет-магазине.
Введение………………………………………………………………………………………………….. 7
Предыстория………………………………………………………………………………………………………………………………… 7
Чему обучит эта книга…………………………………………………………………………………………………………………. 7
Для кого эта книга……………………………………………………………………………………………………………………….. 8
Как пользоваться книгой…………………………………………………………………………………………………………….. 8
Благодарности……………………………………………………………………………………………………………………………… 9
Глава 1. Знакомство с aiogram……………………………………………………………….. 11
Установка aiogram…………………………………………………………………………………………………………………….. 15
Запуск бота………………………………………………………………………………………………………………………………… 20
Как скрыть чувствительные данные (токен) из кода………………………………………………………………. 21
Терминология…………………………………………………………………………………………………………………………….. 21
Глава 2. Работа с текстовыми сообщениями………………………………………….. 23
Что такое хэндлеры…………………………………………………………………………………………………………………… 23
Синтаксический сахар………………………………………………………………………………………………………………. 24
Форматированный вывод………………………………………………………………………………………………………….. 25
Экранирование ввода………………………………………………………………………………………………………………… 27
Сохранение форматирования…………………………………………………………………………………………………… 30
Работа с entities………………………………………………………………………………………………………………………….. 31
Команды и их аргументы………………………………………………………………………………………………………….. 32
Диплинки…………………………………………………………………………………………………………………………………….. 35
Предпросмотр ссылок……………………………………………………………………………………………………………….. 36
Глава 3. Работа с медиафайлами……………………………………………………………. 39
Отправка файлов……………………………………………………………………………………………………………………….. 39
Скачивание файлов……………………………………………………………………………………………………………………. 41
Альбомы……………………………………………………………………………………………………………………………………… 42
Сервисные (служебные) сообщения…………………………………………………………………………………………. 44
Бонус: прячем ссылку в тексте…………………………………………………………………………………………………. 45
Глава 4. Кнопки…………………………………………………………………………………….. 47
Обычные (реплай) кнопки…………………………………………………………………………………………………………. 47
Кнопки как шаблоны…………………………………………………………………………………………………………. 47
Keyboard Builder…………………………………………………………………………………………………………………. 50
Специальные обычные кнопки…………………………………………………………………………………………. 51
Инлайн-кнопки…………………………………………………………………………………………………………………………… 54
URL-кнопки…………………………………………………………………………………………………………………………. 54
Колбэки……………………………………………………………………………………………………………………………….. 55
Фабрика колбэков………………………………………………………………………………………………………………. 60
Автоответ на колбэки………………………………………………………………………………………………………… 64
Глава 5. Роутеры, многофайловость и структура бота……………………………. 67
Роутеры………………………………………………………………………………………………………………………………………. 67
Проброс данных в диспетчер……………………………………………………………………………………………………. 72
Итог……………………………………………………………………………………………………………………………………………… 75
Глава 6. Фильтры…………………………………………………………………………………… 77
Зачем нужны фильтры………………………………………………………………………………………………………………. 77
Фильтры как классы………………………………………………………………………………………………………………….. 79
Магические фильтры…………………………………………………………………………………………………………………. 84
MagicData…………………………………………………………………………………………………………………………………… 87
Глава 7. Мидлвари…………………………………………………………………………………. 89
Зачем нужны мидлвари…………………………………………………………………………………………………………….. 89
Виды и структура мидлварей…………………………………………………………………………………………………… 89
Примеры мидлварей………………………………………………………………………………………………………………….. 92
Передача аргументов в мидлварь…………………………………………………………………………………….. 92
Передача данных из мидлвари…………………………………………………………………………………………. 93
Никаких колбэков по выходным!……………………………………………………………………………………… 95
Флаги…………………………………………………………………………………………………………………………………………… 97
Глава 8. Особые апдейты…………………………………………………………………….. 101
Введение…………………………………………………………………………………………………………………………………… 101
Объект ChatMemberUpdated…………………………………………………………………………………………………… 102
Апдейт my_chat_member………………………………………………………………………………………………………… 102
Баны/разбаны в ЛС………………………………………………………………………………………………………….. 102
Добавление в группу……………………………………………………………………………………………………….. 107
Апдейт chat_member……………………………………………………………………………………………………………….. 111
Актуализация списка админов в группах………………………………………………………………………. 112
Глава 9. Конечные автоматы (FSM)……………………………………………………… 117
Теория……………………………………………………………………………………………………………………………………….. 117
Практика…………………………………………………………………………………………………………………………………… 118
Создание шагов………………………………………………………………………………………………………………… 118
Обработка шага 1…………………………………………………………………………………………………………….. 119
Обработка шага 2…………………………………………………………………………………………………………….. 121
Общие команды………………………………………………………………………………………………………………… 122
Различные стратегии FSM………………………………………………………………………………………………. 123
Глава 10. Сцены…………………………………………………………………………………… 125
Что такое сцены……………………………………………………………………………………………………………………….. 125
Создание простой сцены…………………………………………………………………………………………………………. 127
Переход между сценами………………………………………………………………………………………………………….. 131
Передача данных между сценами………………………………………………………………………………………….. 134
Глава 11. Инлайн-режим………………………………………………………………………. 137
Теория……………………………………………………………………………………………………………………………………….. 137
Зачем нужен инлайн-режим……………………………………………………………………………………………. 137
Формат входящих запросов……………………………………………………………………………………………. 138
Формат исходящих ответов…………………………………………………………………………………………….. 138
Практика…………………………………………………………………………………………………………………………………… 141
Система хранения……………………………………………………………………………………………………………. 141
Команды в боте………………………………………………………………………………………………………………… 143
Сохранение данных…………………………………………………………………………………………………………. 144
Текст…………………………………………………………………………………………………………………………. 144
Изображения……………………………………………………………………………………………………………. 148
Отображение данных………………………………………………………………………………………………………. 149
Текст…………………………………………………………………………………………………………………………. 149
Изображения……………………………………………………………………………………………………………. 151
Удаление данных…………………………………………………………………………………………………………….. 152
Switch туда и обратно……………………………………………………………………………………………………… 155
Дополнительные материалы………………………………………………………………………………………………….. 156
Подгрузка результатов……………………………………………………………………………………………………. 156
Сбор статистики………………………………………………………………………………………………………………. 158
Глава 12. Платежи с Stars…………………………………………………………………….. 161
План работ……………………………………………………………………………………………………………………………….. 161
Технологии……………………………………………………………………………………………………………………………….. 161
Локализация…………………………………………………………………………………………………………………………….. 162
Логи…………………………………………………………………………………………………………………………………………… 164
Пишем код. Команда /start……………………………………………………………………………………………………… 166
Команды /donate……………………………………………………………………………………………………………………… 167
Проверка перед оплатой…………………………………………………………………………………………………………. 171
После оплаты…………………………………………………………………………………………………………………………… 172
Возвраты покупок……………………………………………………………………………………………………………………. 173
Глава 13. Обработка ошибок……………………………………………………………….. 177
Какие бывают ошибки и зачем их обрабатывать…………………………………………………………………. 177
Обработка внутри хэндлеров…………………………………………………………………………………………………. 178
Отдельные обработчики ошибок……………………………………………………………………………………………. 182
Глава 14. Тестирование ботов………………………………………………………………. 185
Общая информация и подготовка…………………………………………………………………………………………… 185
Для чего нужно тестирование…………………………………………………………………………………………. 185
Что, чем и как……………………………………………………………………………………………………………………. 186
Структура файлов и каталогов………………………………………………………………………………………………. 186
Модуль bot……………………………………………………………………………………………………………………….. 187
Модуль tests……………………………………………………………………………………………………………………… 189
Запуск кода и тестов……………………………………………………………………………………………………………….. 193
Запуск кода и тестов в PyCharm…………………………………………………………………………………….. 193
Запуск кода и тестов в Visual Studio Code (VSCode)…………………………………………………….. 196
Тестирование хэндлеров…………………………………………………………………………………………………………. 198
Простой пример……………………………………………………………………………………………………………….. 198
Параметризация тестов…………………………………………………………………………………………………… 200
Тестирование объектов разных типов……………………………………………………………………………. 204
Подмена функций (манкипатчинг)………………………………………………………………………………….. 207
Ожидание ошибок……………………………………………………………………………………………………………. 209
Тестирование FSM…………………………………………………………………………………………………………………… 212
Тестирование всей цепочки…………………………………………………………………………………………….. 212
Тестирование отдельных этапов FSM……………………………………………………………………………. 216
Предметный указатель…………………………………………………………………………. 221
