Телеграм бот на telebot не реагирует на третий хендлер

Рейтинг: 0Ответов: 1Опубликовано: 24.02.2023

Пишу тг-бот на телеботе. Столкнулась с тем, что бот не отвечает на третий хендлер. Читала про пустые хендлеры, но не совсем поняла сути. Помогите, пожалуйста, разобраться.

    @bot.message_handler(commands=['start'])
def start(message, messsage=None):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btn1 = types.KeyboardButton("кнопка1")
    btn2 = types.KeyboardButton("Кнопка2")
    markup.add(btn1, btn2)
    bot.send_message(message.chat.id,
                     "Текст".format(
                         message.from_user), reply_markup=markup)


@bot.message_handler(content_types=['text'])
def func(message):
    if (message.text == "Кнопка1"):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        btn3 = types.KeyboardButton("Первый")
        btn4 = types.KeyboardButton("Второй")
        btn5 = types.KeyboardButton("Третий")
        btn6 = types.KeyboardButton("Четвертый")
        markup.add(btn3, btn4, btn5, btn6)
        bot.send_message(message.chat.id, text="Текст 2".format(message.from_user),
                         reply_markup=markup)
    elif (message.text == "Кнопка2"):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        btn7 = types.KeyboardButton("Пятый")
        btn8 = types.KeyboardButton("Шестой")
        btn9 = types.KeyboardButton("Седьмой")
        btn10 = types.KeyboardButton("Восьмой")
        markup.add(btn7, btn8, btn9, btn10)
        bot.send_message(message.chat.id, text="Текст3".format(message.from_user),
                         reply_markup=markup)

@bot.message_handler(content_types=['text'])
def func(message):
    if message.text == "Первый":
        bot.send_message(message.chat.id, text="Ты выбрал первое")


bot.polling(True)

Ответы

▲ 0Принят

Вы можете исправить эту проблему, добавив условие второго обработчика, чтобы он реагировал только на сообщения, содержащие текст "Первый", как показано в коде ниже:

@bot.message_handler(commands=['start'])
def start(message, messsage=None):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btn1 = types.KeyboardButton("кнопка1")
    btn2 = types.KeyboardButton("Кнопка2")
    markup.add(btn1, btn2)
    bot.send_message(message.chat.id,
                     "Текст".format(
                         message.from_user), reply_markup=markup)


@bot.message_handler(func=lambda message: message.text == "Кнопка1")
def handle_button1(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btn3 = types.KeyboardButton("Первый")
    btn4 = types.KeyboardButton("Второй")
    btn5 = types.KeyboardButton("Третий")
    btn6 = types.KeyboardButton("Четвертый")
    markup.add(btn3, btn4, btn5, btn6)
    bot.send_message(message.chat.id, text="Текст 2".format(message.from_user),
                     reply_markup=markup)


@bot.message_handler(func=lambda message: message.text == "Кнопка2")
def handle_button2(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btn7 = types.KeyboardButton("Пятый")
    btn8 = types.KeyboardButton("Шестой")
    btn9 = types.KeyboardButton("Седьмой")
    btn10 = types.KeyboardButton("Восьмой")
    markup.add(btn7, btn8, btn9, btn10)
    bot.send_message(message.chat.id, text="Текст3".format(message.from_user),
                     reply_markup=markup)


@bot.message_handler(func=lambda message: message.text == "Первый")
def handle_button3(message):
    bot.send_message(message.chat.id, text="Ты выбрал первое")


bot.polling(True)