Задать вопрос

Как сделать кнопки в Telebot на Python, которые будут появляться друг за другом, другими словами создать опросник?

Есть череда вопросов, которые должны появляться постепенно, ответили на первый увеличили счётчик в зависимости от ответа, выплывает второй вопрос и так далее. Как это красивее сделать и более правильно с учётом 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']
# И так далее
  • Вопрос задан
  • 128 просмотров
Подписаться 2 Простой 3 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы