Код ниже имеет трехуровневую навигацию, все работает до перехода к show_items, далее не вызывается ни одна ошибка, просто ничего не происходит, подскажите как можно решить?
Ниже так же показаны скрины того как это выглядит в сообщениях с ботом
@dp.message_handler(commands=['products'])
@dp.message_handler(Text(equals=[' Товары']))
async def show_menu(message: types.Message):
await list_categories(message)
async def list_categories(message: Union[types.Message, types.CallbackQuery], **kwargs):
markup = await categories_keyboard()
if isinstance(message, types.Message):
await message.answer("Смотри что у нас есть", reply_markup=markup)
elif isinstance(message, types.CallbackQuery):
call = message
await call.message.edit_reply_markup(markup)
async def list_subcategories(call: types.CallbackQuery, category: str, subcategory: str = None):
markup = await subcategories_keyboard(category_code=category)
await call.message.edit_reply_markup(markup)
async def list_items(call, category=None, subcategory=None, item_id=None, callback=None):
markup = await items_kb(category_code=category, subcategory_code=subcategory)
message = call.message
try:
await message.edit_reply_markup(reply_markup=markup)
except MessageNotModified:
pass
async def show_items(callback: types.CallbackQuery, category_code, subcategory_code, item_id):
markup = await item_keyboard(category_code, subcategory_code, item_id)
item = await db.sql_get_products(callback)
item_name, item_price = item[7], item[9]
text = f"Купите {item_name} за {item_price} рублей."
await callback.message.edit_text(text, reply_markup=markup)
@dp.callback_query_handler(menu_cd.filter())
async def navigate(call: types.CallbackQuery, callback_data: dict):
current_level = callback_data.get('level')
category = callback_data.get('category')
subcategory = callback_data.get('subcategory')
item_id = callback_data.get('item_id')
levels = {
"0": list_categories,
"1": list_subcategories,
"2": list_items,
"3": show_items
}
current_level_func = levels[current_level]
callback = {"callback_data": callback_data}
if current_level == "1":
await current_level_func(call, category=category, subcategory=subcategory)
else:
await current_level_func(call, category=category, subcategory=subcategory, item_id=item_id,
callback={**callback_data, 'level': '3'})