Делаю бота на Python Telebot API. Пропускаются условия, в которых есть только два варианта. Объясню ниже
Условия, в которых три варианта ответа, выполняются, а условия, в которых два варианта ответа, просто пропускаются, и бот почему-то выбирает вариант самостоятельно. Затем идет следующий вопрос. Код:
@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)
Написал код и вывод бота выше. Вопрос: почему бот пропускает вопросы с двумя вариантами ответов? И как это пофиксить. Заранее спасибо.
Источник: Stack Overflow на русском