Обработка сообщения боту в зависимости от выбранной команды и текста сообщения
Написал вот такой простенький метод:
@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.