Всем привет)
Есть динамическая система создания заданий, затем созданные создания сохраняются в БД, и когда пользователь в телеграм боте нажимает кнопку заданий
Путём цикла перебора я показываю пользователю все возможные задания в инлайн кнопках
kb_tasks = InlineKeyboardMarkup(row_width=1)
for i in range(len(tasks)):
btn_task = InlineKeyboardButton(f"{tasks[i][0]}", callback_data=f'task.{i}')
kb_tasks.add(btn_task)
await message.answer(f"<b>Задания доступные для вас\nЧто бы выбрать нажмите на интересующее</b>",
reply_markup=kb_tasks, parse_mode="html")
Тут я указываю для каждой кнопки коллбэк дата
callback_data=f'task.{i}
, т.е task.0, task.1 и так далее по их последовательности в БД
Теперь, я ловлю коллбэки таким образом
async def select_task(call: types.CallbackQuery):
tasks = await sql.fetch("SELECT name FROM tasks")
for i in range(len(tasks)):
if call.data == f'task.{i}':
await bot.send_message(call.message.chat.id, f"Ты выбрал задание №{i}")
Данный код работает исправно, но думаю что это неправильно
То есть каждый раз когда пользователь нажимает инлайн кнопку тоедело запускается цикл и проходит по всем коллбэкам = task.0, task.1 и так до кол-ва заданий в БД пока не найдет нужный, скажется ли это как нибудь на производительности бота? И как можно записать данный код по другому?
В плане производительности я не имею ввиду супер скорость, но думаю что если пользователей будет хотя бы 10 и заданий 20-30 то это будет жутко лагать
Извиняюсь заранее за большое кол-во текста, так как думаю что так будет понятнее что я хочу сделать
Возможно, написал бред и спрашиваю тоже бред, этого не исключаю)