Учебник Телеграм-боты на Python (aiogram) для начинающих
Хочешь, чтобы у тебя в Telegram жил собственный бот, который отвечает на команды, рисует кнопки, помнит твои настройки и сам присылает напоминания? В этом курсе ты соберёшь такого бота с нуля на Python и библиотеке aiogram 3.x — той самой, на которой работают тысячи реальных ботов.
Мы идём от простого к сложному: сначала бот учится говорить «Привет», потом отвечать на команды и показывать кнопки, потом вести настоящий диалог и запоминать ответы, ходить во внешние сервисы за погодой и новостями, а в конце — переезжает на сервер и работает 24/7. Через весь курс тянется один общий проект — бот «Цыплёнок-помощник», который от урока к уроку обрастает новыми умениями.
Курс рассчитан на новичка, который уже знает базовый Python (переменные, функции, словари) и хочет сделать что-то живое и полезное своими руками. К финалу у тебя будет работающий бот, которым можно похвастаться друзьям.
Курс «Телеграм-боты на Python (aiogram)» состоит из 10 разделов и 40 уроков: Введение, Сообщения и команды, Кнопки и интерфейс, Диалоги и состояния, Данные и хранилище, Интеграции с внешним миром, Полезные паттерны, Группы и администрирование, Деплой и Финал. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Введение
- Что такое бот и как он общается с Telegram
Что такое Telegram-бот, чем он отличается от человека и как программа через Bot API обменивается сообщениями с серверами Telegram.
- Создаём бота через BotFather
Как зарегистрировать своего Telegram-бота через BotFather, получить токен, задать имя и юзернейм и сохранить секретный ключ в безопасности.
- Первый бот на Python: /start
Пишем первого Telegram-бота на Python и aiogram 3.x: устанавливаем библиотеку, подключаем токен и отвечаем на команду /start.
- Как устроен Bot API: polling vs webhook
Чем polling отличается от webhook в Telegram Bot API, как бот получает обновления и какой способ выбрать на старте, а какой — для продакшена.
- Что такое бот и как он общается с Telegram
2 Сообщения и команды
- Хэндлеры сообщений и команд
Как в aiogram 3.x устроены хэндлеры: регистрация через роутер и декораторы, фильтры Command и F, и порядок их срабатывания.
- Отправка текста и форматирование
Отправляем текст из бота на aiogram: разметка HTML и MarkdownV2, жирный, курсив, ссылки и моноширинный код в сообщениях.
- Эхо-бот и работа с текстом
Делаем эхо-бота на aiogram, который повторяет и преобразует текст пользователя: верхний регистр, переворот строки и подсчёт слов.
- Команды с аргументами
Команды с аргументами в aiogram: разбираем /add молоко через CommandObject, парсим параметры и обрабатываем пустой ввод.
- Фото, файлы, стикеры, голосовые
Как бот на aiogram принимает и отправляет фото, документы, стикеры и голосовые: file_id, answer_photo и реакция на разные типы контента.
- Хэндлеры сообщений и команд
3 Кнопки и интерфейс
- Reply-клавиатуры
Reply-клавиатуры в aiogram: строим кнопки через ReplyKeyboardBuilder, размечаем ряды и обрабатываем нажатия как обычный текст.
- Inline-кнопки и callback
Inline-кнопки в aiogram: InlineKeyboardBuilder, callback_data, хэндлер на callback_query и обязательный ответ через answer().
- Меню команд и подсказки
Настраиваем меню команд бота через set_my_commands: список команд с описаниями, подсказки в поле ввода и удобный старт для пользователя.
- Редактирование и удаление сообщений
Редактируем и удаляем сообщения бота на aiogram: edit_text, edit_reply_markup и delete для обновления карточек и интерфейсов.
- Reply-клавиатуры
4 Диалоги и состояния
- FSM: машина состояний
FSM в aiogram 3.x: что такое состояния, как описать StatesGroup, войти в состояние через set_state и провести пользователя по шагам диалога.
- Хранение состояния пользователя
Хранилище состояний FSM в aiogram: MemoryStorage против Redis, сохранение данных через state.update_data и их чтение на следующих шагах.
- Валидация ввода
Проверка пользовательского ввода в FSM-диалоге: валидация числа и текста, вежливые сообщения об ошибке и повтор шага без потери прогресса.
- Отмена и навигация по шагам
Отмена диалога и навигация по шагам в FSM aiogram: команда /cancel, кнопка «Назад», сброс состояния через state.clear и возврат к предыдущему шагу.
- FSM: машина состояний
5 Данные и хранилище
- Зачем боту база данных
Зачем Telegram-боту база данных: почему память исчезает после перезапуска и где хранить пользователей, настройки и историю надёжно.
- SQLite для бота
Подключаем SQLite к Telegram-боту: создаём таблицу пользователей, делаем INSERT и SELECT и связываем запросы к базе с хэндлерами aiogram.
- Модель пользователя и настройки
Храним профиль и настройки пользователя бота в SQLite: поля города, языка и уведомлений, чтение и обновление настроек по telegram id.
- Основы SQLAlchemy
Знакомство с SQLAlchemy для бота: модель пользователя как класс, сессии и базовые операции add, get и commit вместо ручного SQL.
- Зачем боту база данных
6 Интеграции с внешним миром
- Запросы к внешним API (aiohttp)
Делаем HTTP-запросы из Telegram-бота через aiohttp: асинхронный ClientSession, GET-запрос к API, разбор JSON и обработка ошибок сети.
- Бот-погода
Бот-погода на aiogram и aiohttp: спрашиваем город, ходим к погодному API, разбираем температуру и описание и красиво отвечаем пользователю.
- Бот-переводчик и словарь
Бот-переводчик на aiogram: отправляем текст к API перевода, получаем результат, добавляем выбор языка и обрабатываем длинный ввод.
- Новостной бот: парсинг и отправка
Новостной бот на Python: получаем ленту через API или RSS, разбираем заголовки и ссылки и отправляем подборку новостей в Telegram.
- Работа с изображениями
Работа с картинками в боте: скачиваем фото пользователя, обрабатываем через Pillow и отправляем обратно изменённое изображение.
- Запросы к внешним API (aiohttp)
7 Полезные паттерны
- Рассылки и уведомления
Массовые рассылки в Telegram-боте: берём список пользователей из базы, шлём сообщения с паузами и обрабатываем заблокировавших бота.
- Планировщик задач: напоминалки
Напоминания в боте через APScheduler: планируем отложенные и повторяющиеся задачи и отправляем сообщение пользователю в нужное время.
- Throttling и анти-спам
Throttling в aiogram через middleware: ограничиваем частоту сообщений от пользователя, защищаем бота от спама и вежливо просим не частить.
- Логирование и обработка ошибок
Логирование и обработка ошибок в боте на aiogram: модуль logging, глобальный обработчик ошибок и понятный ответ пользователю при сбое.
- Рассылки и уведомления
8 Группы и администрирование
- Бот в группах: права и события
Бот в группах Telegram: режим приватности, права администратора и обработка событий входа и выхода участников через ChatMemberUpdated.
- Модерация: мут, бан, фильтры
Модерация в Telegram-боте: мут и бан через restrict и ban_chat_member, фильтр запрещённых слов и удаление нарушающих сообщений.
- Капча для новых участников
Капча для новичков в группе на aiogram: ограничиваем нового участника, даём проверку кнопкой и снимаем ограничения после прохождения.
- Админ-панель и роли
Админ-панель бота: список админов из настроек, фильтр доступа к командам по роли и закрытое меню управления для администраторов.
- Бот в группах: права и события
9 Деплой
- Переменные окружения и секреты
Храним токен и секреты бота правильно: переменные окружения, файл .env, python-dotenv и почему секреты нельзя коммитить в репозиторий.
- Webhook и хостинг
Переводим бота с polling на webhook: настраиваем set_webhook, поднимаем aiohttp-сервер и понимаем, зачем нужны HTTPS и публичный адрес.
- Деплой на сервер (VPS) и Docker
Деплой Telegram-бота на VPS: установка зависимостей, запуск через systemd, упаковка в Docker и Dockerfile для стабильной работы 24/7.
- Бесплатные хостинги и мониторинг
Где бесплатно держать Telegram-бота и как следить за ним: варианты хостингов, авто-перезапуск, логи и оповещения о падении бота.
- Переменные окружения и секреты
10 Финал
- Финальный проект: бот-помощник
Собираем финальный проект — бота-помощника на aiogram: команды, кнопки, FSM, база данных и внешний API в одном работающем боте.
- Монетизация, лимиты и что дальше
Как заработать на Telegram-боте и не упереться в лимиты: способы монетизации, ограничения Bot API и пути развития после курса.
- Финальный проект: бот-помощник