Как можно реализовать два одинаковых хандлера?

  • 31 августа 2023 г. 17:26
Ответы на вопрос 2
Вот еще один вариант решения:

```python
def handle_message(message):
    if message.text == 'Поздороваться':
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        btn1 = types.KeyboardButton('Вики')
        markup.add(btn1)
        bot.send_message(message.from_user.id, 'Задайте вопрос', reply_markup=markup)
    elif message.text == 'Вики':
        bot.send_message(message.chat.id, 'Отправьте мне любое слово, и я найду его значение на Wikipedia')
    else:
        bot.send_message(message.chat.id, getwiki(message.text))

@bot.message_handler(commands=['start'])
def start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btn1 = types.KeyboardButton("Поздороваться")
    markup.add(btn1)
    bot.send_message(message.from_user.id, "Привет! Я твой бот-помощник!", reply_markup=markup)

@bot.message_handler(content_types=['text'])
def handle_text(message):
    handle_message(message)
```

В этом решении оба обработчика (handler) вынесены в отдельную функцию `handle_message()`. Затем первый обработчик `/start` вызывает функцию `handle_message()` с передачей ему параметра `message`. Второй обработчик `handle_text()` также вызывает эту же функцию. Это позволяет использовать один и тот же код обработки сообщений в обоих обработчиках.
register_next_step_handler переформулировать так: "Зарегистрируйте обработчик следующего этапа"
Похожие вопросы