Обработка сообщения боту в зависимости от выбранной команды и текста сообщения

Написал вот такой простенький метод:

@bot.message_handler(commands=['author'])
def author(message):
    bot.send_message(message.chat.id, "Ты хочешь узнать, кто создал этого бота?")

    if message.text == "Да":
        bot.reply_to(message, "а вот йух тебе")
    elif message.text == "Нет":
        bot.reply_to(message, "Не хочешь — как хочешь.")
    else: 
        bot.reply_to(message, "Ответь только 'да' или 'нет'.\nБез кавычек.")

И когда я пишу команду /author, бот реагирует следующим образом:введите сюда описание изображения

Почему, и как исправить? Спасибо.


Ответы (1 шт):

Автор решения: Sergey Kovalev

Ваш handler обрабатывает команду /author. Внутри этого же обработчика отрабатывает и ваш if. В данном случае ваш message.text будет иметь значение /author. Потому он и попадает в последнюю секцию else. Если я правильно понял, что вы хотите сделать, вам нужен еще один обработчик, который будет обрабатывать простой ввод текстовых сообщений и уже туда вставить свой if. Еще бы конечно запоминать предыдущую команду, чтобы каждый раз на ответ да или нет не возвращать результат if'a.

→ Ссылка