Делаю бота на Python Telebot API. Пропускаются условия, в которых есть только два варианта. Объясню ниже

Рейтинг: 0Ответов: 1Опубликовано: 10.04.2023

Условия, в которых три варианта ответа, выполняются, а условия, в которых два варианта ответа, просто пропускаются, и бот почему-то выбирает вариант самостоятельно. Затем идет следующий вопрос. Код:

@bot.message_handler(commands = ['start'])
def start(message):
    sent = bot.reply_to(message, f'Привет, {message.from_user.first_name}!')
    time.sleep(0.5)

    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btn = types.KeyboardButton('Выбрать масло для волос.')
    markup.add(btn)

    bot.send_message(message.chat.id, 'Что хотите сделать?', reply_markup=markup)





@bot.message_handler(content_types=['text'])
def answers(message):
    if message.chat.type == 'private':
        if message.text == 'Выбрать масло для волос.':
            bot.send_message(message.chat.id, 'С удовольствием! Приступим:')
            time.sleep(0.5)

            markup1qw = types.ReplyKeyboardMarkup(resize_keyboard=True)
            btn1qw1 = types.KeyboardButton('Каждый день.')
            btn2qw1 = types.KeyboardButton('Через день.')
            btn3qw1 = types.KeyboardButton('Пару раз в неделю.')
            markup1qw.add(btn1qw1, btn2qw1, btn3qw1)

            bot.send_message(message.chat.id, 'Как часто Вы моете голову?', reply_markup=markup1qw)

#first question:
        flag = False
        if message.text == 'Каждый день.':
            ans = 'Календула'
            bot.send_message(message.chat.id, 'Ваш первый компонент - ' + ans)
            flag = True
        if message.text == 'Через день.':
            ans = 'Каштан конский'
            bot.send_message(message.chat.id, 'Ваш первый компонент - ' + ans)
            flag = True
        if message.text == 'Пару раз в неделю.':
            ans = 'Василек'
            bot.send_message(message.chat.id, 'Ваш первый компонент - ' + ans)
            flag = True


        time.sleep(0.5)
#second question:
        if flag == True:

            markup2qw = types.ReplyKeyboardMarkup(resize_keyboard=True)
            btn1qw2 = types.KeyboardButton('Короткие.')
            btn2qw2 = types.KeyboardButton('До плеч.')
            btn3qw2 = types.KeyboardButton('До лопаток и длиннее.')
            markup2qw.add(btn1qw2, btn2qw2, btn3qw2)
            bot.send_message(message.chat.id, 'Какова длина Ваших волос?', reply_markup=markup2qw)
        flag1 = False

        if message.text == 'Короткие.':
            ans2 = 'Ангелика'
            bot.send_message(message.chat.id, 'Ваш второй компонент - ' + ans2)
            flag1 = True
        if message.text == 'До плеч.':
            ans2 = 'Донник'
            bot.send_message(message.chat.id, 'Ваш второй компонент - ' + ans2)
            flag1 = True
        if message.text == 'До лопаток и длиннее.':
            ans2 = 'Крапива двудомная'
            bot.send_message(message.chat.id, 'Ваш второй компонент - ' + ans2)
            flag1 = True

# third question:
        if flag1 == True:

            markup3qw = types.ReplyKeyboardMarkup(resize_keyboard=True)
            btn1qw3 = types.KeyboardButton('Да.')
            btn2qw3 = types.KeyboardButton('Нет.')
            markup3qw.add(btn1qw3, btn2qw3)
            bot.send_message(message.chat.id, 'Есть ли у Вас перхоть?', reply_markup=markup3qw)
        flag2 = False

        if message.text == 'Да.':
            ans3 = 'Арника'
            bot.send_message(message.chat.id, 'Ваш третий компонент - ' + ans3)
            flag2 = True
        if message.text == 'Нет.':
            ans3 = 'Лопух'
            bot.send_message(message.chat.id, 'Ваш третий компонент - ' + ans3)
            flag2 = True

#fourth question:
        if flag2 == True:
            markup4qw = types.ReplyKeyboardMarkup(resize_keyboard=True)
            btn1qw4 = types.KeyboardButton('Да.')
            btn2qw4 = types.KeyboardButton('Нет.')
            markup4qw.add(btn1qw4, btn2qw4)
            bot.send_message(message.chat.id, 'Красите ли Вы волосы?', reply_markup=markup4qw)
        flag3 = False

        if message.text == 'Да.':
            ans4 = 'Пижма'
            bot.send_message(message.chat.id, 'Ваш четвертый компонент - ' + ans4)
            flag3 = True
        if message.text == 'Нет.':
            ans4 = 'Мать-и-мачеха'
            bot.send_message(message.chat.id, 'Ваш четвертый компонент - ' + ans4)
            flag3 = True

#fifth question:
        if flag3 == True:
            markup5qw = types.ReplyKeyboardMarkup(resize_keyboard=True)
            btn1qw5 = types.KeyboardButton('Да.')
            btn2qw5 = types.KeyboardButton('Нет.')
            markup5qw.add(btn1qw5, btn2qw5)
            bot.send_message(message.chat.id, 'Делали ли Вы химическую завивку?', reply_markup=markup5qw)
        flag4 = False

        if message.text == 'Да.':
            ans5 = 'Гранат'
            bot.send_message(message.chat.id, 'Ваш пятый компонент - ' + ans5)
            flag4 = True
        if message.text == 'Нет.':
            ans5 = 'Облепиха'
            bot.send_message(message.chat.id, 'Ваш пятый компонент - ' + ans5)
            flag4 = True

#sixth question:
        if flag4 == True:
            markup6qw = types.ReplyKeyboardMarkup(resize_keyboard=True)
            btn1qw6 = types.KeyboardButton('Почти не выпадают.')
            btn2qw6 = types.KeyboardButton('До 30 шт в день.')
            btn3qw6 = types.KeyboardButton('Сильно выпадают.')
            markup6qw.add(btn1qw6, btn2qw6, btn3qw6)
            bot.send_message(message.chat.id, 'Выпадают ли у Вас волосы?', reply_markup=markup6qw)


        if message.text == 'Почти не выпадают.':
            ans6 = 'Полынь горькая'
            bot.send_message(message.chat.id, 'Ваш шестой компонент - ' + ans6)
        if message.text == 'До 30 шт в день.':
            ans6 = 'Ангелика'
            bot.send_message(message.chat.id, 'Ваш шестой компонент - ' + ans6)
        if message.text == 'Сильно выпадают.':
            ans6 = 'Бессмертник'
            bot.send_message(message.chat.id, 'Ваш шестой компонент - ' + ans6)

Что выдает бот: ответы бота

Написал код и вывод бота выше. Вопрос: почему бот пропускает вопросы с двумя вариантами ответов? И как это пофиксить. Заранее спасибо.

Ответы

▲ 0

Решение: Просто поменял надписи на кнопках и в условиях, чтобы ничего не повторялось. Все заработало так, как я планировал.