
Полная версия
Создаём телеграм-бота на python

Никита Войтов
Создаём телеграм-бота на 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, будет вызван первый обработчик, а если напишет текст "Привет" – второй.
Запуск диспетчера
После регистрации всех обработчиков, диспетчер запускается командой:
pythonimport asyncio async def main(): await dp.start_polling(bot) if __name__ == "__main__": asyncio.run(main())
Это запускает поллинг Telegram для получения обновлений.
В этой главе рассмотрены базовые архитектурные элементы Aiogram 3.x – Dispatcher, Handlers и Filters, которые составляют основу любого бота. В следующей главе перейдём к работе с клавиатурами и inline-кнопками, чтобы сделать бота интерактивным.
Глава 3. Клавиатуры и Inline-кнопки в Aiogram 3.x
Чтобы сделать бот более удобным и интерактивным, используют клавиатуры – специальные наборы кнопок, которые пользователь видит прямо в интерфейсе Telegram. В Aiogram 3.x имеется два основных типа клавиатур: обычные ReplyKeyboard и InlineKeyboard.
ReplyKeyboard – клавиатура для быстрого ответа
ReplyKeyboard отображается пользователю под полем ввода сообщений и содержит кнопки с текстом. При нажатии на кнопку её текст отправляется как сообщение боту.
Как создать простую клавиатуру:
pythonfrom aiogram.types import ReplyKeyboardMarkup, KeyboardButton keyboard = ReplyKeyboardMarkup( keyboard=[ [KeyboardButton(text="Привет"), KeyboardButton(text="Помощь")], [KeyboardButton(text="Контакт", request_contact=True)], ], resize_keyboard=True, ) @dp.message(Command("start")) async def start(message: Message): await message.answer("Выберите действие:", reply_markup=keyboard)
resize_keyboard=True уменьшает размер клавиатуры.
Кнопка с request_contact=True запрашивает у пользователя контакт.
Пользователь нажимает кнопку, и её текст приходит боту как обычное сообщение.
InlineKeyboard – клавиатура с кнопками посылающими callback_query
InlineKeyboard отображается прямо в сообщении и кнопки не посылают текста, а отправляют callback-ответы, которые бот обрабатывает отдельно. Это позволяет создавать более сложные сценарии взаимодействия.
Конец ознакомительного фрагмента.
Текст предоставлен ООО «Литрес».
Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.



