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'