@RaulD

Как сделать так, чтобы исполнялись все декораторы в чат-боте Телеграм?

Noob question!
Дорогие разработчики, подскажите глупцу, в чём дело

Нужно сделать телеграм-бота. Но, не могу понять, почему после команды '/start' срабатывает лишь один следующий декоратор и на этом действие заканчивается. Код:
@bot.message_handler(commands=['start'])
def handle_start(message):
    user_markup = telebot.types.ReplyKeyboardMarkup(True, True)
    user_markup.row('Buy', 'Sell')
    bot.send_message(message.from_user.id, 'Greetings!', reply_markup=user_markup)

def handle_start(message):
    hide_markup = telebot.types.ReplyKeyboardHide()
    bot.send_message(message.from_user.id, '...', reply_markup=hide_markup)

@bot.message_handler(content_types=['text'])
def ex_x(message):
    if message.text == 'Some button':
        bot.send_message(message.from_user.id, 'Enter the value: ')
        buy_value = (message.text)
        bot.send_message(message.from_user.id, 'Next')
        

    elif message.text == 'Some button2':
        bot.send_message(message.from_user.id, 'Enter the value: ')
        sell_value = (message.text)

@bot.message_handler(content_types=['text'])
def total(message):
        bot.send_message(message.from_user.id, 'Enter the second value: ')
        value2 = (message.text)

Как сделать так, чтобы все хэндлеры выполнялись поочередно и каждый пользовательский ввод был сохранен?
  • Вопрос задан
  • 1311 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Sovetnikov
технический директор pulsprodaj.ru
1. У вас два раза определен handle_start ... возможно это и не помешает работе, но всё зависит от реализации декоратора подписки на событие message_handler.
Переименуйте.

2. А почему после команды "/start" от пользователя должно что-то ещё сработать?
Видимо message_handler срабатывает только на первом хендлере у которого фильтр выполнился.
Вы хотите чтобы сразу на одно сообщение сработали handle_start и ex_x и total?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы