54 lines
2.4 KiB
Python
54 lines
2.4 KiB
Python
from aiogram.types import Message, CallbackQuery
|
|
from ..context import CallbackCommand
|
|
|
|
from ....utils.navigation import (
|
|
get_navigation_context,
|
|
save_navigation_context,
|
|
pop_navigation_context,
|
|
)
|
|
|
|
import qbot.bot.handlers.menu.main as menu_main
|
|
import qbot.bot.handlers.menu.settings as menu_settings
|
|
import qbot.bot.handlers.menu.parameters as menu_parameters
|
|
import qbot.bot.handlers.menu.language as menu_language
|
|
import qbot.bot.handlers.menu.entities as menu_entities
|
|
import qbot.bot.handlers.forms.entity_list as form_list
|
|
import qbot.bot.handlers.forms.entity_form as form_item
|
|
import qbot.bot.handlers.editors.main as editor
|
|
|
|
|
|
async def route_callback(message: Message | CallbackQuery, back: bool = True, **kwargs):
|
|
state_data = kwargs["state_data"]
|
|
stack, context = get_navigation_context(state_data)
|
|
if back:
|
|
context = pop_navigation_context(stack)
|
|
stack = save_navigation_context(callback_data=context, state_data=state_data)
|
|
kwargs.update({"callback_data": context, "navigation_stack": stack})
|
|
if context:
|
|
if context.command == CallbackCommand.MENU_ENTRY_MAIN:
|
|
await menu_main.main_menu(message, **kwargs)
|
|
elif context.command == CallbackCommand.MENU_ENTRY_SETTINGS:
|
|
await menu_settings.settings_menu(message, **kwargs)
|
|
elif context.command == CallbackCommand.MENU_ENTRY_PARAMETERS:
|
|
await menu_parameters.parameters_menu(message, **kwargs)
|
|
elif context.command == CallbackCommand.MENU_ENTRY_LANGUAGE:
|
|
await menu_language.language_menu(message, **kwargs)
|
|
elif context.command == CallbackCommand.MENU_ENTRY_ENTITIES:
|
|
await menu_entities.entities_menu(message, **kwargs)
|
|
elif context.command == CallbackCommand.ENTITY_LIST:
|
|
await form_list.entity_list(message, **kwargs)
|
|
elif context.command == CallbackCommand.ENTITY_ITEM:
|
|
await form_item.entity_item(message, **kwargs)
|
|
elif context.command == CallbackCommand.FIELD_EDITOR:
|
|
await editor.field_editor(message, **kwargs)
|
|
elif context.command == CallbackCommand.USER_COMMAND:
|
|
import qbot.bot.handlers.user_handlers.main as user_handler
|
|
|
|
await user_handler.cammand_handler(
|
|
message, from_callback_query=True, **kwargs
|
|
)
|
|
else:
|
|
raise ValueError(f"Unknown command {context.command}")
|
|
else:
|
|
raise ValueError("No navigation context")
|