Никита Войтов
Создаём телеграм-бота на python

Об авторе

Меня зовут Никита Войтов. Я – backend-разработчик с трёхлетним опытом коммерческой работы. За это время я участвовал в создании и поддержке различных веб-сервисов, REST API и, конечно, Telegram-ботов для бизнеса и развлечений.

Мой основной стек – Python, FastAPI, PostgreSQL, Docker, а также современные инструменты для асинхронного программирования. Я активно использую aiogram для разработки ботов, потому что считаю его лучшим выбором для быстрого и удобного создания сложных Telegram-ботов.

В этой книге я делюсь своим опытом, практическими советами и примерами кода, чтобы помочь вам быстро освоить aiogram и начать создавать собственных ботов. Если у вас возникнут вопросы или предложения, вы всегда можете связаться со мной через Telegram: @voitov23 или по почте: pochta5343@mail.ru.

Глава 1. Введение

Что такое aiogram?

aiogram – это современный асинхронный Python-фреймворк для создания Telegram-ботов. Он построен на основе asyncio и позволяет эффективно обрабатывать множество одновременных запросов, что особенно важно для популярных и быстрорастущих ботов.

Почему стоит выбрать aiogram?

Асинхронность: aiogram использует возможности asyncio, что делает бота быстрым и отзывчивым даже при большом количестве пользователей.

Простота: Чистый и лаконичный синтаксис, который легко читать и поддерживать.

Гибкость: aiogram поддерживает все возможности Telegram Bot API, включая работу с медиа, inline-кнопками, платежами и многим другим.

Активное сообщество: aiogram постоянно развивается, а сообщество предоставляет множество примеров и готовых решений.

Для кого эта книга?

Эта книга предназначена для начинающих и продолжающих разработчиков, которые хотят быстро и эффективно научиться создавать Telegram-ботов на Python. Предполагается, что у читателя есть базовые знания Python и желание изучать новые технологии.

Глава 2. Установка и настройка

2.1. Установка Python

Перед началом убедитесь, что у вас установлен Python версии 3.8 или выше. Скачать актуальную версию можно с официального сайта Python.

Проверьте версию Python в терминале:

bash

python –version

или

bash

python3 –version

2.2. Установка aiogram

Установить aiogram очень просто с помощью pip:

bash

pip install aiogram

Рекомендуется использовать виртуальное окружение для каждого проекта. Например:

bash

python -m venv venv

source venv/bin/activate # Для Linux/Mac

venv\Scripts\activate # Для Windows

pip install aiogram

2.3. Получение токена у BotFather

Откройте Telegram и найдите пользователя @BotFather.

Отправьте команду /newbot и следуйте инструкциям: придумайте имя и username для бота.

После создания BotFather пришлёт вам токен – длинную строку символов. Сохраните его, он понадобится для запуска бота.

Глава 3. Первая программа: Эхо-бот

3.1. Создание проекта

Создайте новую папку для своего проекта, например, my_aiogram_bot.

Перейдите в неё и (по желанию) создайте виртуальное окружение:

bash

python -m venv venv

source venv/bin/activate # Linux/Mac

venv\Scripts\activate # Windows

Установите aiogram (если ещё не установлен):

bash

pip install aiogram

3.2. Создание файла бота

Создайте файл, например, bot.py и откройте его в любимом редакторе кода.

3.3. Минимальный эхо-бот на aiogram

Вставьте следующий код в файл bot.py. Не забудьте заменить 'ВАШ_ТОКЕН_ЗДЕСЬ' на токен, полученный от BotFather.

python

from aiogram import Bot, Dispatcher, types

from aiogram.utils import executor

API_TOKEN = 'ВАШ_ТОКЕН_ЗДЕСЬ'

# Создаём объекты бота и диспетчера

bot = Bot(token=API_TOKEN)

dp = Dispatcher(bot)

# Хэндлер для всех входящих сообщений

@dp.message_handler()

async def echo_message(message: types.Message):

await message.answer(message.text)

if __name__ == '__main__':

executor.start_polling(dp, skip_updates=True)

3.4. Запуск бота

В терминале bash запустите файл:

python bot.py

Если всё сделано правильно, бот начнёт работать. Теперь напишите ему любое сообщение в Telegram – он должен ответить вам тем же текстом.

3.5. Как это работает?

Bot – объект для общения с Telegram API.

Dispatcher – объект, который получает и распределяет входящие сообщения по хэндлерам.

@dp.message_handler() – декоратор, который регистрирует функцию для обработки всех сообщений.

executor.start_polling() – запускает цикл обработки новых сообщений (polling).

Поздравляю!

Вы только что создали своего первого Telegram-бота на aiogram. В следующих главах мы разберём, как обрабатывать команды, использовать кнопки, хранить данные и многое другое.

Глава 4. Обработка сообщений и команд

4.1. Обработка команд

В Telegram-ботах команды – это специальные сообщения, которые начинаются с символа / (например, /start, /help). Aiogram позволяет легко обрабатывать такие команды с помощью фильтров.

Пример: обработка команды /start

Добавьте в ваш bot.py следующий код:

python

from aiogram import Bot, Dispatcher, types

from aiogram.utils import executor

API_TOKEN = 'ВАШ_ТОКЕН_ЗДЕСЬ'

bot = Bot(token=API_TOKEN)

dp = Dispatcher(bot)

@dp.message_handler(commands=['start'])

async def send_welcome(message: types.Message):

await message.reply("Привет! Я твой первый бот на aiogram.")

@dp.message_handler(commands=['help'])

async def send_help(message: types.Message):

await message.reply("Вот что я умею:\n/start – начать\n/help – помощь\nНапиши мне что-нибудь, и я повторю это!")

@dp.message_handler()

async def echo_message(message: types.Message):

await message.answer(message.text)

if __name__ == '__main__':

executor.start_polling(dp, skip_updates=True)

Теперь бот будет отвечать на команды /start и /help специальными сообщениями, а на всё остальное – повторять текст.

4.2. Фильтры сообщений

Aiogram позволяет задавать фильтры для хэндлеров – это условия, при которых хэндлер будет срабатывать.

Пример: фильтр по типу сообщения

python

@dp.message_handler(content_types=['photo'])

async def handle_photo(message: types.Message):

await message.reply("Спасибо за фото!")

@dp.message_handler(lambda message: 'привет' in message.text.lower())

async def handle_hello(message: types.Message):

await message.reply("И тебе привет!")

Первый хэндлер сработает, если пользователь отправит фото.

Второй – если в тексте сообщения есть слово "привет".

4.3. Обработка нескольких условий

Конец ознакомительного фрагмента.

Текст предоставлен ООО «Литрес».

Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.

Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.