• Как в боте telebot продолжать цикл после ответа пользователя, нажатием на кнопку инлайн?

    @M_shumey Автор вопроса
    Да, спасибо, суть я уловил.
    Не совсем понял понял как запустить отдельную функцию нового вопроса, поэтому:
    Сделал вызов нового вопроса внутри блока "@bot.callback_query_handler(func=lambda c: c.data == 'True')"
    где появляется сообщение о правильном ответе.
    а новые вопросы вызываются через счётчики в глобальных переменных
    наверное пока это выглядит немного дилетантски, но буду дальше причесывать.
    вот код:
    spoiler
    import telebot
    import random
    import csv
    from telebot import types
    from random import shuffle
    
    # Создаем экземпляр бота
    bot = telebot.TeleBot('5803281696:AAGsitbE5qTcQfrcSp8bODci144I5O_5n9A')
    # Загружаем список вопросов
    qestions = []
    q_list = []
    global i
    global numr
    numr=0
    i=0
    with open('data/qestions.csv') as q:
        QS = csv.reader(q)
        qestions=list(QS)
        for qestion in qestions:
            a=str(qestion).split(';')
            q_list.append(a)
    shuffle(q_list)
    
    
    #приветсвие и запуск теста
    @bot.message_handler(commands=["start"])
    def get_text_messages(message, res=False):
        keyboard = types.InlineKeyboardMarkup(); #наша клавиатура
        key_begin = types.InlineKeyboardButton(text="Начнем", callback_data='begin'); #кнопка ответ 1
        keyboard.add(key_begin); #добавляем кнопку в клавиатуру
        bot.send_message(message.from_user.id, text="Привет, я Бот для подготовки к теоретическому тесту для сдачи экзаменов на права", reply_markup=keyboard)
    
    #Вывод первого вопроса из списка
    @bot.callback_query_handler(func=lambda c: c.data == 'begin')
    def first_q(callback_query: types.CallbackQuery):
        global numq
        global i
        numq=1
        q=q_list[0]
        if q[1]!="": 
            sti = open(q[1], 'rb')
            bot.send_sticker(callback_query.from_user.id, sti)
        else: pass
            
        keyboard = types.InlineKeyboardMarkup(); #наша клавиатура
            
        key_ans1 = types.InlineKeyboardButton(text=q[3], callback_data='true'); #кнопка ответ 1
        keyboard.add(key_ans1); #добавляем кнопку в клавиатуру
            
        key_ans2= types.InlineKeyboardButton(text=q[4], callback_data='false'); #кнопка ответ 2
        keyboard.add(key_ans2);
            
        key_ans3= types.InlineKeyboardButton(text=q[5][:-1], callback_data='false'); #кнопка ответ 3
        keyboard.add(key_ans3);
            
        bot.send_message(callback_query.from_user.id, text="Вопрос №" + str(numq) +": \n" + q[2], reply_markup=keyboard)
        
        numq=numq+1
        i=i+1
    
    #Вывод вывод следующего вопроса из списка при надатии на правильный ответ
    @bot.callback_query_handler(func=lambda c: c.data == 'true')
    def process_callback_rigth(callback_query: types.CallbackQuery):
        global numr
        global numq
        global i
        bot.answer_callback_query(callback_query.id)
        bot.send_message(callback_query.from_user.id, 'Правильный ответ!')
        numr=numr+1
        bot.send_message(callback_query.from_user.id, text='Правильных ответов:' + str(numr))
        q=q_list[i]
        if q[1]!="": 
            sti = open(q[1], 'rb')
            bot.send_sticker(callback_query.from_user.id, sti)
        else: pass
            
        keyboard = types.InlineKeyboardMarkup(); #наша клавиатура
            
        key_ans1 = types.InlineKeyboardButton(text=q[3], callback_data='true'); #кнопка ответ 1
        keyboard.add(key_ans1); #добавляем кнопку в клавиатуру
            
        key_ans2= types.InlineKeyboardButton(text=q[4], callback_data='false'); #кнопка ответ 2
        keyboard.add(key_ans2);
            
        key_ans3= types.InlineKeyboardButton(text=q[5][:-1], callback_data='false'); #кнопка ответ 3
        keyboard.add(key_ans3);
            
        bot.send_message(callback_query.from_user.id, text="Вопрос №" + str(numq) +": \n" + q[2], reply_markup=keyboard)
        
        numq=numq+1
        i=i+1
    
    #Вывод сообщения о неправильном ответе
    @bot.callback_query_handler(func=lambda c: c.data == 'false')
    def process_callback_wrong(callback_query: types.CallbackQuery):
        bot.answer_callback_query(callback_query.id)
        bot.send_message(callback_query.from_user.id, 'Ответ неверный')
    
    bot.polling(none_stop=True, interval=0)