Читать книгу: «Создаём телеграм-бота на python»
Об авторе
Меня зовут Никита Войтов. Я – backend-разработчик с трёхлетним опытом коммерческой работы. За это время я участвовал в создании и поддержке различных веб-сервисов, REST API и, конечно, Telegram-ботов для бизнеса и развлечений.
Мой основной стек – Python, FastAPI, PostgreSQL, Docker, а также современные инструменты для асинхронного программирования. Я активно использую aiogram для разработки ботов, потому что считаю его лучшим выбором для быстрого и удобного создания сложных Telegram-ботов.
В этой книге я делюсь своим опытом, практическими советами и примерами кода, чтобы помочь вам быстро освоить aiogram и начать создавать собственных ботов.
Глава 1. Введение в Telegram Bot API и Aiogram 3.x
Телеграм-боты – это программы, которые взаимодействуют с пользователями через популярный мессенджер Telegram. Они способны выполнять различные задачи: от отправки уведомлений и новостей до управления умным домом и проведения игр. В этой книге мы создадим несколько таких ботов на языке программирования Python, используя современную библиотеку Aiogram версии 3.x.
Что такое Telegram Bot API?
Telegram предоставил публичный API, который позволяет создавать ботов – автоматизированные аккаунты с функционалом, расширяющим возможности мессенджера. Через API боты получают сообщения пользователей, могут отвечать, обрабатывать команды, отправлять медиа и так далее.
Основные принципы работы бота:
Получение обновлений (updates) от Telegram: поллингом или вебхуками.
Обработка этих обновлений с помощью программной логики.
Отправка ответов пользователю через API.
Почему Aiogram?
Aiogram – это асинхронная библиотека для создания Telegram-ботов на Python. Вот её преимущества:
Использует современный синтаксис Python с async/await.
Поддерживает все возможности Telegram Bot API.
Имеет понятную архитектуру с диспетчером (Dispatcher), обработчиками (Handlers) и фильтрами (Filters).
Активно развивается и поддерживается сообществом.
Позволяет легко масштабировать ботов и интегрировать с другими сервисами.
Версия 3.x стала крупным обновлением, где изменился API и улучшилась производительность. В этой книге мы используем последнюю стабильную версию Aiogram 3.13 (на момент написания).
Установка и настройка
Для начала работы нам понадобится следующее:
Python 3.10+ (для полной поддержки новых возможностей синтаксиса)
Телеграм-бот и токен от BotFather (в Telegram найдите аккаунт @BotFather и создайте нового бота, получите токен)
Установим Aiogram:
bashpython -m pip install aiogram==3.13
Создадим минимальный скрипт бота bot.py:
pythonfrom aiogram import Bot, Dispatcher, types from aiogram.filters import Command from aiogram.types import Message import asyncio TOKEN = "ВАШ_ТОКЕН_ЗДЕСЬ" bot = Bot(token=TOKEN) dp = Dispatcher() @dp.message(Command("start")) async def cmd_start(message: Message): await message.answer("Привет! Я – ваш первый бот на Aiogram 3.x.") async def main(): await dp.start_polling(bot) if __name__ == "__main__": asyncio.run(main())
Запустите скрипт:
bashpython bot.py
Теперь в Telegram отправьте команду /start вашему боту и получите приветственное сообщение.
Глава 2. Архитектура Aiogram 3.x: Dispatcher, Handlers и Filters
В этой главе подробно рассмотрим, как устроена библиотека Aiogram 3.x, и какие ключевые компоненты используются для построения ботов. Понимание архитектуры поможет создавать более гибкие и масштабируемые приложения.
Dispatcher – центральный регулятор событий
Dispatcher (диспетчер) – это основа управления событиями в Aiogram. Его задача – получать обновления от Telegram и направлять их к соответствующим обработчикам (Handlers).
Основные функции Dispatcher:
Регистрация обработчиков сообщений, команд, коллбеков и других типов обновлений.
Обработка входящих обновлений и вызов соответствующих функций.
Поддержка middleware для дополнительной обработки запросов.
В Aiogram 3.x создаётся экземпляр Dispatcher без передачи объекта Bot, он передаётся отдельно при запуске.
pythonfrom aiogram import Dispatcher dp = Dispatcher()
Handlers – обработчики событий
Обработчики (Handlers) – это асинхронные функции, которые вызываются при наступлении определённого события (получении сообщения, комманды, callback query и др.).
Пример обработчика для команды /start:
pythonfrom aiogram.filters import Command from aiogram.types import Message @dp.message(Command("start")) async def cmd_start(message: Message): await message.answer("Привет от обработчика команды /start!")
Aiogram позволяет создавать обработчики для разных типов событий – сообщений, коллбеков, inline-запросов и т. д.
Filters – фильтры для выбора обновлений
Фильтры – это специальные классы или функции, которые помогают выбирать нужные обновления, например, сообщения только с определённой командой, от конкретных пользователей или с определённым текстом.
Пример фильтра команды:
python@dp.message(Command("help")) async def help_handler(message: Message): await message.answer("Вот список доступных команд…")
Также можно создавать свои собственные фильтры для более сложных условий.
Пример: несколько обработчиков и фильтр по тексту
pythonfrom aiogram.filters import Text @dp.message(Command("start")) async def start_handler(message: Message): await message.answer("Добро пожаловать!") @dp.message(Text("Привет")) async def greet_handler(message: Message): await message.answer("Привет! Как дела?")
Если пользователь отправит /start, будет вызван первый обработчик, а если напишет текст "Привет" – второй.
Покупайте книги и получайте бонусы в Литрес, Читай-городе и Буквоеде.
Участвовать в бонусной программе
