@FailureBij

Как упростить код inline кнопок?

Есть очень огромный код с 150 инлайн кнопоками telegram bot aiogram
вот фрагмент одного callback (таких 5 штук). Как можно это упростить? Я не разобрался можно ли как то сделать инлайн кнопки в виде списка, т.е нажимаешь на 2/3 он перекидывает на 8 кнопок, жмешь 3/3 он перекидывает еще на других 8 кнопок

@dp.callback_query_handler(text_contains='tr33')
async def ibresp25(call: types.CallbackQuery):

    conn = sqlite3.connect("tred.db")
    cur = conn.cursor()
    cur.execute("SELECT titl FROM bvd")
    s = cur.fetchall()

    tr9 = InlineKeyboardButton(f"{s[9][0]}", callback_data="tr10")
    tr10 = InlineKeyboardButton(f"{s[10][0]}", callback_data="tr11")
    tr11 = InlineKeyboardButton(f"{s[11][0]}", callback_data="tr12")
    tr12 = InlineKeyboardButton(f"{s[12][0]}", callback_data="tr13")
    tr13 = InlineKeyboardButton(f"{s[13][0]}", callback_data="tr14")
    tr14 = InlineKeyboardButton(f"{s[14][0]}", callback_data="tr15")
    tr15 = InlineKeyboardButton(f"{s[15][0]}", callback_data="tr16")
    tr16 = InlineKeyboardButton(f"{s[16][0]}", callback_data="tr17")

    tr1111 = InlineKeyboardButton(f"1/3", callback_data="trr0")
    tr222 = InlineKeyboardButton(f"⬅️ Назад", callback_data="btn9")
    tr3333 = InlineKeyboardButton(f"3/3", callback_data="tr44")

    tradeee = InlineKeyboardMarkup(resize_keyboard=True)
    tradeee.add(tr9 )
    tradeee.add(tr10)
    tradeee.add(tr11)
    tradeee.add(tr12)
    tradeee.add(tr13)
    tradeee.add(tr14)
    tradeee.add(tr15)
    tradeee.add(tr16)
    tradeee.add(tr1111, tr222, tr3333)
  • Вопрос задан
  • 138 просмотров
Пригласить эксперта
Ответы на вопрос 1
@twistfire92
Python backend developer
инициализацию и добавление кнопок tr9 - tr16 можно упростить так:

buttons = []
for number in range(9, 17):
    buttons.append(InlineKeyboardButton(f"{s[number][0]}", callback_data=f"tr{number+1}"))

........

tradeee.add(*buttons)


Пагинацию можешь сам надумать. Я бы в отдельную функцию вывел заполнение кнопочной разметки. Параметром туда передаешь "номер страницы", от этого и пляшешь.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы