Привет! Меня зовут Егор, я ученик 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-бота!