Есть череда вопросов, которые должны появляться постепенно, ответили на первый увеличили счётчик в зависимости от ответа, выплывает второй вопрос и так далее. Как это красивее сделать и более правильно с учётом InlineKeyboardButton и callback_data? Или может можно решить этот вопрос по другому? А ещё как сделать так, чтобы кнопки нельзя было повторно нажимать?
Вот мой работающий вариант, но он коряв...
@bot.message_handler(commands=['start'])
def get_text_messages(message):
bot.send_message(message.from_user.id,
hi_text['first'])
keyboard = types.InlineKeyboardMarkup()
key_next = types.InlineKeyboardButton(text='Продолжить',
callback_data='next')
keyboard.add(key_next)
bot.send_message(
message.from_user.id, text=hi_text['second'],
reply_markup=keyboard)
@bot.callback_query_handler(func=lambda call: True)
def query_handler(call):
global first_pas_count
global second_pas_count
bot.answer_callback_query(callback_query_id=call.id)
if call.data == 'next':
bot.send_message(call.from_user.id,
first_pas['name_1'])
keyboard = types.InlineKeyboardMarkup()
key_q_1_1 = types.InlineKeyboardButton(text=first_pas['answer_1_1'],
callback_data='answer_1_1')
keyboard.add(key_q_1_1)
key_q_1_2 = types.InlineKeyboardButton(text=first_pas['answer_1_2'],
callback_data='answer_1_2')
keyboard.add(key_q_1_2)
key_q_1_3 = types.InlineKeyboardButton(text=first_pas['answer_1_3'],
callback_data='answer_1_3')
keyboard.add(key_q_1_3)
key_q_1_4 = types.InlineKeyboardButton(text=first_pas['answer_1_4'],
callback_data='answer_1_4')
keyboard.add(key_q_1_4)
bot.send_message(call.from_user.id, text=first_pas['question_1'],
reply_markup=keyboard)
if call.data == 'answer_1_1':
first_pas_count += 1
elif call.data == 'answer_1_2':
first_pas_count += 2
elif call.data == 'answer_1_3':
first_pas_count += 3
elif call.data == 'answer_1_4':
first_pas_count += 4
check_1 = ['answer_1_1', 'answer_1_2', 'answer_1_3', 'answer_1_4']
if any(x in call.data for x in check_1):
keyboard = types.InlineKeyboardMarkup()
key_q_1_1 = types.InlineKeyboardButton(text=first_pas['answer_2_1'],
callback_data='answer_2_1')
keyboard.add(key_q_1_1)
key_q_1_2 = types.InlineKeyboardButton(text=first_pas['answer_2_2'],
callback_data='answer_2_2')
keyboard.add(key_q_1_2)
key_q_1_3 = types.InlineKeyboardButton(text=first_pas['answer_2_3'],
callback_data='answer_2_3')
keyboard.add(key_q_1_3)
key_q_1_4 = types.InlineKeyboardButton(text=first_pas['answer_2_4'],
callback_data='answer_2_4')
keyboard.add(key_q_1_4)
bot.send_message(call.from_user.id, text=first_pas['question_2'],
reply_markup=keyboard)
if call.data == 'answer_2_1':
first_pas_count += 1
elif call.data == 'answer_2_2':
first_pas_count += 2
elif call.data == 'answer_2_3':
first_pas_count += 3
elif call.data == 'answer_2_4':
first_pas_count += 4
check_2 = ['answer_2_1', 'answer_2_2', 'answer_2_3', 'answer_2_4']
# И так далее