@The_King_Midas

При смене inline клавиатуры старая не удаляется aiogram, как исправить?

Есть клавиатуры в файле x.py вида:
def kb_pg0():
    ib.add(types.InlineKeyboardButton(text="➡️", callback_data="pg_1"))
    kb = inlinebuilder.as_markup()
    return kb


И функция для приёма callback в основном файле:
@dp.callback_query(Text(startswith="pg_"))
async def callbacks_num(call: types.CallbackQuery):
    action = call.data.split("_")[1]

    if action == "0":
        await call.message.edit_text("текст страницы 0", reply_markup=x.kb_pg0())
    elif action == "1":
        await call.message.edit_text("текст страницы 1", reply_markup=x.kb_pg1())
    elif action == "2":
        await call.message.edit_text("текст страницы 2", reply_markup=x.kb_pg2())
    elif action == "3":
        await call.message.edit_text("текст страницы 3", reply_markup=x.kb_pg3())
    elif action == "4":
        await call.message.edit_text("текст страницы 4", reply_markup=x.kb_pg4())

    await call.answer()


Клавиатуры как ожидается не меняются, причём если предварительно очищать параметр reply_markup результат не измениться:
@dp.callback_query(Text(startswith="pg_"))
async def callbacks_num(call: types.CallbackQuery):
    action = call.data.split("_")[1]
    if action == "0":
        await call.message.edit_reply_markup(reply_markup=None)
        await call.message.edit_text(x.pg1, reply_markup=x.kb_pg0())
    elif action == "1":
        await call.message.edit_reply_markup(reply_markup=None)
        await call.message.edit_text(x.pg1, reply_markup=x.kb_pg1())
    elif action == "2":
        await call.message.edit_reply_markup(reply_markup=None)
        await call.message.edit_text(x.pg2, reply_markup=x.kb_pg2())
    elif action == "3":
        await call.message.edit_reply_markup(reply_markup=None)
        await call.message.edit_text(x.pg3, reply_markup=x.kb_pg3())
    elif action == "4":
        await call.message.edit_reply_markup(reply_markup=None)
        await call.message.edit_text(x.pg4, reply_markup=x.kb_pg4())

    await call.answer()


Подскажите как исправить?
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
RimMirK
@RimMirK
Вроде человек. Вроде учусь. Вроде пайтону
message.delete_reply_markup()

и создавай новую клавиатуру в функцях kb_pgХ
def kb_pg0():
    kb = types.inline_keyboard.InlineKeyboardMarkup()
    kb.add(
        types.InlineKeyboardButton(text="➡️", callback_data="pg_1")
    )
    return kb
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы