diff --git a/README.md b/README.md index 5d5b323..0277c99 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,10 @@ router = Router() @router.command("hello") def hello(): print("Hello, world!") + +@router.unknown_command +def unlnown_command(command): + print(f'Command "{command}" undefined') ``` ```python #main.py @@ -169,6 +173,18 @@ App(prompt: str = 'Enter a command', `RepeatedCommandInDifferentRoutersException`. Исключение вызывается только при наличии пересекающихся команд у __разных__ роутеров +- У главного обработчика должен быть зарегистрирован обработчик неизвестных команд: +```python +router = Router() + +@router.unknown_command +def unknown_command(command): + print(f'Command "{command}" undefined') +``` +При отсутствии обработчика неизвестных команд у главного роутера будет вызвано исключение +`MissingHandlerForUnknownCommandsException`. При регистрации обработчика неизвестных команд у +__не__ главного роутера будет вызвано исключение `HandlerForUnknownCommandsOnNonMainRouterException` + @@ -178,8 +194,8 @@ App(prompt: str = 'Enter a command', - `InvalidDescriptionMessagePatternException` — Неправильный формат паттерна описания команд. - `OnlyOneMainRouterIsAllowedException` — Регистрация более одного главного роутера. - `MissingMainRouterException` — Отсутствует главный роутер. -- `MissingHandlersForUnknownCommandsOnMainRouterException` — В основном роутере отсутствует обработчик неизвестных команд. -- `HandlerForUnknownCommandsCanOnlyBeDeclaredForMainRouterException` — Обработчик неизвестных команд определён не у основного роутера. +- `MissingHandlerForUnknownCommandsException` — В основном роутере отсутствует обработчик неизвестных команд. +- `HandlerForUnknownCommandsOnNonMainRouterException` — Обработчик неизвестных команд определён не у основного роутера. - `NoRegisteredRoutersException` — Отсутствуют зарегистрированные роутеры. - `NoRegisteredHandlersException` — У роутера нет ни одного обработчика команд. - `RepeatedCommandInDifferentRoutersException` — Одна и та же команда зарегистрирована в разных роутерах. diff --git a/argenta/app/__init__.py b/argenta/app/__init__.py index c31d6f9..9f315a8 100644 --- a/argenta/app/__init__.py +++ b/argenta/app/__init__.py @@ -1,7 +1,7 @@ from .entity import App -from .exceptions import (HandlerForUnknownCommandsCanOnlyBeDeclaredForMainRouterException, +from .exceptions import (HandlerForUnknownCommandsOnNonMainRouterException, InvalidDescriptionMessagePatternException, InvalidRouterInstanceException, OnlyOneMainRouterIsAllowedException, MissingMainRouterException, - MissingHandlersForUnknownCommandsOnMainRouterException) + MissingHandlerForUnknownCommandsException) diff --git a/argenta/app/entity.py b/argenta/app/entity.py index 2a6afc4..28992c3 100644 --- a/argenta/app/entity.py +++ b/argenta/app/entity.py @@ -4,8 +4,8 @@ from .exceptions import (InvalidRouterInstanceException, InvalidDescriptionMessagePatternException, OnlyOneMainRouterIsAllowedException, MissingMainRouterException, - MissingHandlersForUnknownCommandsOnMainRouterException, - HandlerForUnknownCommandsCanOnlyBeDeclaredForMainRouterException, + MissingHandlerForUnknownCommandsException, + HandlerForUnknownCommandsOnNonMainRouterException, NoRegisteredRoutersException, NoRegisteredHandlersException, RepeatedCommandInDifferentRoutersException) @@ -152,11 +152,11 @@ class App: self._app_main_router = router if not self._app_main_router.unknown_command_func: - raise MissingHandlersForUnknownCommandsOnMainRouterException() + raise MissingHandlerForUnknownCommandsException() for router in self._routers: if router.unknown_command_func and self._app_main_router is not router: - raise HandlerForUnknownCommandsCanOnlyBeDeclaredForMainRouterException() + raise HandlerForUnknownCommandsOnNonMainRouterException() def _validate_all_router_commands(self) -> None: diff --git a/argenta/app/exceptions.py b/argenta/app/exceptions.py index 560bee0..7e626bc 100644 --- a/argenta/app/exceptions.py +++ b/argenta/app/exceptions.py @@ -28,13 +28,13 @@ class MissingMainRouterException(Exception): "One of the registered routers must be the main one") -class MissingHandlersForUnknownCommandsOnMainRouterException(Exception): +class MissingHandlerForUnknownCommandsException(Exception): def __str__(self): return ("Missing Handlers For Unknown Commands On The Main Router\n" "The main router must have a declared handler for unknown commands") -class HandlerForUnknownCommandsCanOnlyBeDeclaredForMainRouterException(Exception): +class HandlerForUnknownCommandsOnNonMainRouterException(Exception): def __str__(self): return '\nThe handler for unknown commands can only be declared for the main router'