Как привязать данные базы данных sqlite3 к KeyboardButton
Я пишу бота-тестировщика для телеграмма. Задумка такая: пользователю выводится вопрос и в виде кнопок, 4 ответа. Я написал функцию kb(), где как раз прикрепляются данные из py_test к 4 кнопкам. Как достать kb_webtest и values из функции и как сделать так, чтобы каждый последующий запуск num += 1?
Если что, в py_test question = values[0], true_answer = values[1], false_answer2,3,4 = values[2,3,4]
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram import types, Dispatcher
from aiogram.dispatcher.filters import Text
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton
from database.sqlite_db import cursor
def kb():
num = 1
for values in cursor.execute(f'SELECT * FROM py_test WHERE rowid = {num}').fetchall():
b1 = KeyboardButton(f'{values[1]}')
b2 = KeyboardButton(f'{values[2]}')
b3 = KeyboardButton(f'{values[3]}')
b4 = KeyboardButton(f'{values[4]}')
b5 = KeyboardButton(f'отмена')
kb_webtest = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
kb_webtest.add(b1, b2).add(b3, b4).add(b5)
return values, kb_webtest
class FSMWeb(StatesGroup):
question1 = State()
async def cancel_handler(message: types.Message, state: FSMContext):
current_state = await state.get_state()
if current_state is None:
return
await state.finish()
await message.reply('Отмена выполнена')
async def question1(message: types.Message, state: FSMContext):
await FSMWeb.question1.set()
# await message.answer(f'{values[0]}', reply_markup=kb_webtest)
#
# if message.text == values[1]:
# await message.answer('Правильно!')
# await state.finish()
#
# elif message.text == values[2] or values[3] or values[4]:
# await message.answer(f'Не правильно! Правильный ответ: {values[1]}')
def web_test_register(dp: Dispatcher):
dp.register_message_handler(cancel_handler, Text(equals='отмена', ignore_case=True), state='*')
dp.register_message_handler(question1, Text(equals='Python test', ignore_case=True), state='*')