Главная

-

Блог

-

Документация для Telegram-бота на Python

Автор Олег

12.03.2025

33

Документация для Telegram-бота на Python

Telegram-боты — это мощный инструмент для автоматизации задач, улучшения взаимодействия с пользователями и даже для ведения бизнеса. Если вы хотите создать своего первого бота на Python, эта статья станет вашим пошаговым руководством. Мы разберем, как использовать библиотеку Aiogram, как подключить бота к Telegram API и как сделать его функциональным. Всё это — с подробными объяснениями для новичков.

Почему Python и Telegram-боты?

Python — это один из самых популярных языков программирования для создания Telegram-ботов. Он прост в изучении, имеет понятный синтаксис и множество библиотек, которые упрощают разработку. Среди библиотек для работы с Telegram API выделяется Aiogram — современная и мощная библиотека, которая поддерживает асинхронное программирование. Это значит, что ваш бот сможет обрабатывать несколько запросов одновременно, не блокируя выполнение других задач.

Что нужно для создания Telegram-бота?

  1. Python — установите Python версии 3.7 или выше. Если у вас его еще нет, скачайте с официального сайта.
  2. Библиотека Aiogram — это библиотека для работы с Telegram API. Установите её с помощью команды:
    pip install aiogram
    
  3. Telegram-бот — зарегистрируйте бота через BotFather в Telegram, чтобы получить API-токен. Если вы еще не знаете, как это сделать, я объясню ниже.

Регистрация бота через BotFather

  1. Найдите в Telegram бота @BotFather.
  2. Отправьте команду /newbot.
  3. Следуйте инструкциям: задайте имя бота (например, «MyTestBot») и его username (например, «MyTestBot_bot»).
  4. После регистрации вы получите API-токен — это строка, которая выглядит примерно так: 123456789:ABCdefGhIJKlmNoPQRstuVWXyz. Сохраните её, она понадобится для подключения к Telegram API.

Начинаем писать код

Теперь, когда у нас есть API-токен, давайте создадим файл main.py и начнем писать код. Я буду комментировать каждую часть, чтобы вам было понятно, что происходит.

1. Импортируем необходимые модули


from aiogram import Bot, Dispatcher, executor, types
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton

2. Указываем API-токен


API_TOKEN = 'ВАШ_API_ТОКЕН'

Здесь нужно вставить токен, который вы получили от BotFather. Это ключ, который позволяет вашему боту взаимодействовать с Telegram API.

3. Инициализируем бота и диспетчер


bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)

  • bot — это объект, который представляет вашего бота.
  • dp — это диспетчер, который будет обрабатывать входящие сообщения и команды.
  • 4. Создаем клавиатуру с кнопками «Да» и «Нет»

    
    keyboard = ReplyKeyboardMarkup(resize_keyboard=True)
    button_yes = KeyboardButton(text="Да")
    button_no = KeyboardButton(text="Нет")
    keyboard.add(button_yes, button_no)
    
    
  • ReplyKeyboardMarkup — это клавиатура, которая будет отображаться под сообщением. Параметр resize_keyboard=True делает кнопки компактными.
  • KeyboardButton — это кнопка, которая будет отображаться на клавиатуре. Мы создаем две кнопки: «Да» и «Нет».
  • keyboard.add — добавляет кнопки на клавиатуру.
  • 5. Обработчик команды /start

    
    @dp.message_handler(commands=['start'])
    async def send_welcome(message: types.Message):
        await message.answer("Привет! Я бот, который задает вопросы.", reply_markup=keyboard)
        await message.answer("Вы любите Python?", reply_markup=keyboard)
    
    
  • @dp.message_handler(commands=[‘start’]) — это декоратор, который указывает, что функция send_welcome будет вызываться, когда пользователь отправит команду /start.
  • message.answer — отправляет сообщение пользователю. Мы отправляем два сообщения: приветствие и вопрос.
  • reply_markup=keyboard — добавляет клавиатуру с кнопками к сообщению.
  • 6. Обработчик ответов пользователя

    
    @dp.message_handler()
    async def handle_answer(message: types.Message):
        if message.text == "Да":
            await message.answer("Отлично! Python — это круто! 🐍", reply_markup=keyboard)
        elif message.text == "Нет":
            await message.answer("Очень жаль! Может, стоит попробовать? 😊", reply_markup=keyboard)
        else:
            await message.answer("Пожалуйста, выберите ответ, нажав на кнопку.", reply_markup=keyboard)
    
    
  • @dp.message_handler() — этот декоратор указывает, что функция handle_answer будет вызываться для всех текстовых сообщений.
  • message.text — это текст, который отправил пользователь.
  • if message.text == «Да»: — если пользователь нажал «Да», бот отвечает: «Отлично! Python — это круто! 🐍».
  • elif message.text == «Нет»: — если пользователь нажал «Нет», бот отвечает: «Очень жаль! Может, стоит попробовать? 😊».
  • else: — если пользователь отправил что-то другое, бот просит выбрать ответ с помощью кнопок.
  • 7. Запуск бота

    
    if __name__ == '__main__':
        executor.start_polling(dp, skip_updates=True)
    
    
  • executor.start_polling — запускает бота и начинает опрашивать сервер Telegram на наличие новых сообщений.
  • skip_updates=True — игнорирует сообщения, которые были отправлены, пока бот был offline.
  • Полный код

    
    from aiogram import Bot, Dispatcher, executor, types
    from aiogram.types import ReplyKeyboardMarkup, KeyboardButton
    
    # Укажите ваш API-токен
    API_TOKEN = 'ВАШ_API_ТОКЕН'
    
    # Инициализация бота и диспетчера
    bot = Bot(token=API_TOKEN)
    dp = Dispatcher(bot)
    
    # Создаем клавиатуру с кнопками "Да" и "Нет"
    keyboard = ReplyKeyboardMarkup(resize_keyboard=True)
    button_yes = KeyboardButton(text="Да")
    button_no = KeyboardButton(text="Нет")
    keyboard.add(button_yes, button_no)
    
    # Обработчик команды /start
    @dp.message_handler(commands=['start'])
    async def send_welcome(message: types.Message):
        await message.answer("Привет! Я бот, который задает вопросы.", reply_markup=keyboard)
        await message.answer("Вы любите Python?", reply_markup=keyboard)
    
    # Обработчик ответов пользователя
    @dp.message_handler()
    async def handle_answer(message: types.Message):
        if message.text == "Да":
            await message.answer("Отлично! Python — это круто! 🐍", reply_markup=keyboard)
        elif message.text == "Нет":
            await message.answer("Очень жаль! Может, стоит попробовать? 😊", reply_markup=keyboard)
        else:
            await message.answer("Пожалуйста, выберите ответ, нажав на кнопку.", reply_markup=keyboard)
    
    # Запуск бота
    if __name__ == '__main__':
        executor.start_polling(dp, skip_updates=True)
    
    

    Как запустить бота?

    1. Сохраните код в файл main.py.
    2. Откройте терминал и перейдите в папку, где находится файл.
    3. Запустите бота командой:
    4. 
      python main.py
      
      
    5. Найдите своего бота в Telegram и начните с ним диалог, отправив команду /start.

    Заключение

    Теперь у вас есть простой, но функциональный Telegram-бот, который задает вопрос и предлагает выбрать ответ с помощью кнопок. Вы можете расширить его функционал, добавив больше вопросов или команд. Если у вас остались вопросы или что-то не работает, обращайтесь — я помогу. 😊