Оглавление

Telegram-боты стали популярным инструментом для автоматизации задач, взаимодействия с пользователями и интеграции различных сервисов. Они широко применяются в бизнесе, образовательных проектах, службах поддержки и многих других сферах. Благодаря простоте API и удобным библиотекам на Python, создать собственного бота может даже новичок в программировании.  

В этой статье мы подробно рассмотрим процесс создания Telegram-бота, начиная с регистрации в @BotFather , выбора библиотеки и написания кода, заканчивая тестированием и развертыванием.  

Библиотеки для создания бота  

Для разработки бота на Python существует несколько библиотек, каждая из которых имеет свои особенности и преимущества. Рассмотрим наиболее популярные варианты.  

1. Aiogram  

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

Плюсы Aiogram :  

- Высокая скорость работы благодаря   asyncio  .  

- Простая структура кода.  

- Хорошая документация.  

 2. python-telegram-bot  

python-telegram-bot – одна из самых старых и популярных библиотек для создания ботов на Python. Она синхронная, но предлагает большой функционал и удобный интерфейс.  

Плюсы python-telegram-bot:  

- Поддержка как синхронного, так и асинхронного режима.  

- Простота использования.  

- Широкая документация и большое сообщество.  

3. Telethon  

Telethon – это библиотека для работы с Telegram API, ориентированная на создание клиентов (например, для автоматизированного взаимодействия с Telegram). Подходит не только для ботов, но и для написания пользовательских Telegram-клиентов.  

Плюсы Telethon:  

- Гибкость в настройке.  

- Возможность работы с аккаунтами Telegram, а не только с ботами.  

- Поддержка асинхронного программирования.  

В данной статье мы будем использовать   Aiogram  , так как эта библиотека современная, удобная и позволяет писать эффективные Telegram-боты.  

Основные шаги создания бота в Telegram на Python – пошагово  

1. Регистрация бота в Telegram  

Перед тем как начать писать код, необходимо зарегистрировать бота в Telegram через @BotFather.

1. Открываем Telegram и находим бота @BotFather .  

2. Отправляем команду  /newbot .  

3. Указываем имя бота (например,MyFirstBot).  

4. Придумываем уникальное имя пользователя (например,my_first_bot).  

5. Получаем API-токен, который понадобится для взаимодействия с Telegram API.  

Токен представляет собой строку, например:  

1234567890:ABCDEFghIJKLmnopQRSTUVwxYZ

Сохраните этот токен, так как он потребуется для работы с ботом.  

2. Установка необходимых библиотек  

Установим   Aiogram  , используя pip:  

bash

pip install aiogram

3. Создание бота  

Создадим файл   bot.py   и напишем базовый код:  

python

import asyncio

import logging

from aiogram import Bot, Dispatcher, types

API_TOKEN = "ВАШ_ТОКЕН"

Включаем логирование

logging.basicConfig(level=logging.INFO)

Создаем экземпляры бота и диспетчера

bot = Bot(token=API_TOKEN)

dp = Dispatcher()

Обработчик команды /start

@dp.message(commands=["start"])

async def start_command(message: types.Message):

    await message.answer("Привет! Я ваш Telegram-бот.")

Запуск бота

async def main():

    await dp.start_polling(bot)

if __name__ == "__main__":

    asyncio.run(main())

Этот код создает простого Telegram-бота, который отвечает на команду   /start  .  

4. Обработка сообщений  

Добавим обработку текстовых сообщений, чтобы бот мог отвечать на любое сообщение пользователя:  

python

@dp.message()

async def echo_message(message: types.Message):

    await message.answer(f"Вы сказали: {message.text}")

Теперь бот будет повторять любое сообщение пользователя.  

5. Добавление кнопок  

Для удобства взаимодействия с ботом можно использовать кнопки. Добавим ReplyKeyboardMarkup:  

python

from aiogram.types import ReplyKeyboardMarkup, KeyboardButton

@dp.message(commands=["menu"])

async def show_menu(message: types.Message):

    keyboard = ReplyKeyboardMarkup(keyboard=[

        [KeyboardButton(text="Кнопка 1"), KeyboardButton(text="Кнопка 2")]

    ], resize_keyboard=True)

    await message.answer("Выберите опцию:", reply_markup=keyboard)

Теперь бот сможет отправлять пользователю кнопки с вариантами выбора.  

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

Добавим поддержку нескольких команд:  

python

@dp.message(commands=["help"])

async def help_command(message: types.Message):

    await message.answer("Доступные команды:\n/start - Начало работы\n/help - Список команд\n/menu - Меню")

Запуск и тестирование бота  

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

Чтобы запустить бота, выполните команду:  

bash

python bot.py

2. Тестирование в Telegram  

1. Откройте Telegram.  

2. Найдите своего бота по юзернейму.  

3. Отправьте команду   /start   – бот должен ответить приветствием.  

4. Попробуйте отправить сообщение – бот должен его повторить.  

5. Введите   /menu  , чтобы проверить кнопки.  

Развертывание бота на сервере  

Если бот должен работать постоянно, его можно развернуть на сервере. Самый простой способ – использовать   pm2   (если у вас Linux-сервер):  

bash

npm install pm2 -g

pm2 start bot.py --interpreter python3

pm2 save

pm2 startup

Также можно использовать облачные платформы, такие как:  

- Heroku  

- AWS Lambda  

- DigitalOcean  

Заключение  

Создание Telegram-бота на Python – это несложный процесс, если использовать удобные библиотеки, такие как   Aiogram  . В данной статье мы рассмотрели основные этапы разработки бота:  

- Регистрация через   @BotFather  .  

- Установка необходимых библиотек.  

- Написание кода бота.  

- Добавление команд и кнопок.  

- Запуск и тестирование.  

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

Автор текста

Дмитрий Лукьянов, backend-разработчик

Найдем лучшее решение вашей задачи