Как сделать, чтобы создавались кнопки и после выводить кнопки моделей?
помогите, пожалуйста, хочу сделать, чтобы создавались кнопки брендов кроссовок. Они создаются замечательно, но надо сделать чтобы если пользователь нажмёт на кнопку бренда кроссовка, то будут создаваться инлайн кнопки моделей этого бренда и выводиться МОДЕЛИ только этого бренда (пример:
мы нажимаем на кнопку nike и нам выводит сообщение с инлайн кнопками моделей бренда найк, С другими брендами также). Примерно как на скрине.
Код колбэков:
@dp.callback_query_handler()
async def callback_query_keyboard_shoes(callback_query: types.CallbackQuery):
items = [row[0] for row in db.cur.execute('SELECT model FROM items').fetchall()]
for model in items:
if callback_query.data == model:
brend2_name = model
# получение данных из таблицы
db.cur.execute("SELECT model, price, brang, photo_it FROM items WHERE model = ?",
(brend2_name,))
data = db.cur.fetchall()
# форматирование данных в виде строки
text = ''
for row in data:
text += f"model: {row[0]}\n price: {row[1]}\nbrend: {row[2]}"
await bot.send_message(callback_query.from_user.id, text=text)
await bot.send_photo(callback_query.from_user.id, photo=row[3])
if callback_query.data == 'shoes':
items = [row[0] for row in db.cur.execute('SELECT brang FROM items').fetchall()]
markup = InlineKeyboardMarkup(row_width=1) # создаём клавиатуру
for brang in items:
markup.add(InlineKeyboardButton(text=brang, callback_data=brang))
await bot.send_message(callback_query.from_user.id, "Выберите бренд", reply_markup=markup)
items = [row[0] for row in db.cur.execute('SELECT brang FROM items').fetchall()]
for brang in items:
if callback_query.data == brang:
items = [row[0] for row in db.cur.execute('SELECT model FROM items').fetchall()]
markup = InlineKeyboardMarkup(row_width=1) # создаём клавиатуру
for model in items:
markup.add(InlineKeyboardButton(text=model, callback_data=model))
await bot.send_message(callback_query.from_user.id, "Выберите модель", reply_markup=markup)
Источник: Stack Overflow на русском