Как реализовать несколько последовательных ответов(ДА-НЕТ) на вопрос в Telegram?

Надо реализовать код, чтобы работал так: бот задает вопрос - пользователь отвечает ДА, НЕТ. Если пользователь отвечает ДА, то вопросов больше нет, но, если НЕТ, то снова задается вопрос ДА, НЕТ. На первый ДА/НЕТ реагирует, а вот на второй нет - все время на команды реагирует первый блок да-нет. Как можно решить этот вопрос? Думал, что может быть, если в лямда функцию передать значение false, то обработчик остановиться и код пойдет дальше, но нет - он полностью перестает обрабатывать любые сообщения, кроме нет-да. Библиотека pyTelegramBotAPI Вот вариант такой строки. @bot.message_handler(func=lambda message: message if message.text.upper() == 'YES' or message.text.upper() == 'NO' else False) Проблема в def 3_step

@bot.message_handler(func = lambda c: True, commands=['komanda'])
def 1_step(message):
    'тут код продолжается'
    for i in values:
        spisok.append(i)
    'тут код продолжается'
    bot.register_next_step_handler(msg, 2_step)

def 2_step(message):
     'тут код продолжается'
    bot.register_next_step_handler(msg, 3_step)

def 3_step(message):
    @bot.message_handler(func=lambda message: message.text == 'YES' or 'NO')
    def yes_no(message):
        if message.text == 'YES':
            'выполняется блок'
        elif message.text == 'NO':
            @bot.message_handler(func=lambda message: message.text == 'YES' or 'NO') #<- не работает
            def yes_no_2(message):
                if message.text == 'YES':
                    'выполняется код'
                elif message.text == 'NO':
                    'выполняется код'
                else:
                    bot.send_message(id, 'Пиши yes или no')
        else:
            bot.send_message(id, 'Пиши yes или no')
    bot.register_next_step_handler(msg, 4_step)

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

Автор решения: cool rage

Для ответов выше, пожалуйста, внимательно читайте вопросы, человек использует телебот, а не аио - телебот имеет встроенную поддержку fsm, метод ниже уже имеет машину состояний.

bot.register_next_step_handler 

Рекурсивка:

@bot.message_handler(commands=['start'])
def start_handler(message):
    bot.send_message(message.chat.id, "Привет! Я бот, задающий вопросы. Готов ответить на них?")
    bot.register_next_step_handler(message, first_question)

# Первый вопрос
def first_question(message):
    bot.send_message(message.chat.id, "Первый вопрос: ...? (да/нет)")
    bot.register_next_step_handler(message, second_question)

# Второй вопрос
def second_question(message):
    if message.text.lower() == 'нет':  # Если ответ - "нет"
        bot.send_message(message.chat.id, "Всего хорошего!")
        return  # Прерываем диалог
    bot.send_message(message.chat.id, "Второй вопрос: ...? (да/нет)")
    bot.register_next_step_handler(message, third_question)

# Третий вопрос
def third_question(message):
    if message.text.lower() == 'нет':  # Если ответ - "нет"
        bot.send_message(message.chat.id, "Всего хорошего!")
        return  # Прерываем диалог
    bot.send_message(message.chat.id, "Третий вопрос: ...? (да/нет)")
    # и т.д.

# Обработчик ответов на вопросы
@bot.message_handler(func=lambda message: message.text.lower() in ['да', 'нет'])
def answer_handler(message):
    # Обработка ответа
    if message.text.lower() == 'да':
        bot.send_message(message.chat.id, "Ответ на все вопросы - да!")

        

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

→ Ссылка