Да, спасибо, суть я уловил.
Не совсем понял понял как запустить отдельную функцию нового вопроса, поэтому:
Сделал вызов нового вопроса внутри блока "@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)
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Не совсем понял понял как запустить отдельную функцию нового вопроса, поэтому:
Сделал вызов нового вопроса внутри блока "@bot.callback_query_handler(func=lambda c: c.data == 'True')"
где появляется сообщение о правильном ответе.
а новые вопросы вызываются через счётчики в глобальных переменных
наверное пока это выглядит немного дилетантски, но буду дальше причесывать.
вот код: