Найти в Дзене

"Создаем Умного Telegram-Бота: Полное Руководство по Обработчикам Команд на Python"

Привет! Меня зовут Егор, я ученик 9 класса, и сегодня я расскажу вам о том, как создавать обработчики команд в Telegram-боте на Python с помощью библиотеки telebot. Предположим, что вы уже знаете, как импортировать библиотеку и создавать бота с помощью BotFather. Давайте сразу перейдем к созданию обработчиков команд и объясним каждую строчку кода.

### Обработчики команд

Обработчики команд — это функции, которые выполняются, когда пользователь отправляет определенную команду боту. Команды в Telegram начинаются с символа /. Давайте рассмотрим, как создавать такие обработчики.

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

Команда /start обычно используется для приветствия пользователя и объяснения того, что бот умеет делать. Создадим обработчик для этой команды:

@bot.message_handler(commands=['start'])
def handle_start(message):
bot.send_message(message.chat.id, "Привет! Я твой бот. Чем могу помочь?")

Давайте разберем этот код построчно:

1.
@bot.message_handler(commands=['start'])
- Эта строка объявляет обработчик команды. Здесь мы указываем, что эта функция будет вызвана, когда бот получит команду /start.

2.
def handle_start(message):
- Мы определяем функцию
handle_start, которая принимает один аргумент — message. Этот аргумент содержит информацию о сообщении, отправленном пользователем.

3.
bot.send_message(message.chat.id, "Привет! Я твой бот. Чем могу помочь?")
- Эта строка отправляет сообщение пользователю. message.chat.id указывает, в какой чат отправить сообщение, а текст "Привет! Я твой бот. Чем могу помочь?" — это содержание сообщения.

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

Команда /help нужна для того, чтобы напомнить пользователю, какие команды доступны и что они делают. Добавим обработчик для этой команды:

@bot.message_handler(commands=['help'])
def handle_help(message):
help_text = (
"/start - Начать работу с ботом\n"
"/help - Получить список команд\n"
"/echo - Повторить ваше сообщение\n"
)
bot.send_message(message.chat.id, help_text)

Давайте разберем этот код построчно:

1.
@bot.message_handler(commands=['help'])
- Эта строка объявляет обработчик команды /help.

2.
def handle_help(message):
- Мы определяем функцию
handle_help, которая принимает один аргумент — message.

3.
help_text = (...)
- Мы создаем переменную
help_text, в которой храним текст с описанием доступных команд.

4.
bot.send_message(message.chat.id, help_text)
- Эта строка отправляет текст из переменной
help_text в чат, откуда пришло сообщение.

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

Команда /echo возвращает пользователю его же сообщение. Для этого нам нужно получить текст после команды и отправить его обратно:

@bot.message_handler(commands=['echo'])
def handle_echo(message):
text_to_echo = message.text[len('/echo '):]
bot.send_message(message.chat.id, text_to_echo)

Давайте разберем этот код построчно:

1.
@bot.message_handler(commands=['echo'])
- Эта строка объявляет обработчик команды /echo.

2.
def handle_echo(message):
- Мы определяем функцию
handle_echo, которая принимает один аргумент — message.

3.
text_to_echo = message.text[len('/echo '):]
- Эта строка извлекает текст, который идет после команды /echo. Мы используем срез строки
message.text[len('/echo '):] для этого.

4.
bot.send_message(message.chat.id, text_to_echo)
- Эта строка отправляет извлеченный текст обратно пользователю.

### Запуск бота

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

bot.polling(none_stop=True)
Давайте разберем этот код:

1.
bot.polling(none_stop=True)
- Эта строка запускает бот и говорит ему непрерывно проверять новые сообщения. Параметр none_stop=True означает, что бот будет работать без остановки, даже если произойдут ошибки.

### Полный пример кода обработчиков

Теперь соберем все вместе:

import telebot

# Замените 'YOUR_BOT_TOKEN' на токен, который вы получили от BotFather
bot = telebot.TeleBot('YOUR_BOT_TOKEN')

@bot.message_handler(commands=['start'])
def handle_start(message):
bot.send_message(message.chat.id, "Привет! Я твой бот. Чем могу помочь?")

@bot.message_handler(commands=['help'])
def handle_help(message):
help_text = (
"/start - Начать работу с ботом\n"
"/help - Получить список команд\n"
"/echo - Повторить ваше сообщение\n"
)
bot.send_message(message.chat.id, help_text)


@bot.message_handler(commands=['echo'])
def handle_echo(message):
text_to_echo = message.text[len('/echo '):]
bot.send_message(message.chat.id, text_to_echo)
bot.polling(none_stop=True)


Теперь ваш бот готов к работе и может обрабатывать команды /start, /help и /echo. Вы можете добавлять новые команды и их обработчики по аналогии. Удачи в создании своего Telegram-бота!