This commit is contained in:
2025-11-29 11:51:59 +03:00
parent 47fda23431
commit 2a96dfcabe
28 changed files with 103 additions and 242 deletions
+9 -26
View File
@@ -3,7 +3,7 @@
Command
=======
``Command`` — это основная единица функциональности в приложении. Каждая команда определяет действие, которое пользователь может выполнить, введя соответствующий триггер. Команды регистрируются в роутерах и формируют интерфейс взаимодействия с приложением.
``Command`` — это основная единица функциональности в приложении. Каждая команда связывает хэндлер с триггером, введя который он будет вызван для обработки.
``Command`` инкапсулирует всю информацию о команде: её триггер (ключевое слово для вызова), описание, набор флагов и список псевдонимов.
@@ -18,13 +18,13 @@ Command
__init__(self, trigger: str, *,
description: str | None = None,
flags: Flag | Flags = DEFAULT_WITHOUT_FLAGS,
aliases: list[str] | None = None) -> None
aliases: list[str] | list[Never] = DEFAULT_WITHOUT_ALIASES) -> None
Создаёт новую команду для регистрации в роутере.
* ``trigger``: Строковый триггер, который пользователь вводит для вызова команды. Является основным идентификатором.
* ``description``: Необязательное описание, объясняющее назначение команды. Отображается в справке.
* ``flags``: Набор флагов для настройки поведения. Может быть одиночным объектом `Flag` или коллекцией `Flags`.
* ``flags``: Набор флагов для настройки поведения. Может быть одиночным объектом ``Flag`` или коллекцией ``Flags``.
* ``aliases``: Список строковых псевдонимов для основного триггера.
**Атрибуты:**
@@ -39,7 +39,7 @@ Command
.. py:attribute:: registered_flags
Объект `Flags`, содержащий все зарегистрированные флаги. Автоматически конвертируется из одиночного `Flag` в коллекцию при инициализации.
Объект ``Flags``, содержащий все зарегистрированные флаги. Если был передан ``Flag``, то автоматически конвертируется из одиночного в коллекцию при инициализации.
.. py:attribute:: aliases
@@ -58,7 +58,7 @@ Command
Регистрация команд
------------------
Команды регистрируются в роутерах с помощью декоратора ``@router.command()``, после чего становятся доступными для вызова.
Команды передаются в качестве аргумента в декоратор ``@router.command()``.
**Базовый пример:**
@@ -79,21 +79,9 @@ Command
**Пример с псевдонимами:**
.. code-block:: python
.. literalinclude:: ../../../code_snippets/command/snippet5.py
:linenos:
from argenta import Router, Command
router = Router(title="System")
@router.command(Command(
"shutdown",
description="Shutdown the system",
aliases=["poweroff", "halt", "stop"]
))
def handle_shutdown(response):
response.write("Shutting down the system...")
Теперь пользователь может вызвать команду любым из способов:
.. code-block:: bash
@@ -103,7 +91,7 @@ Command
halt
stop
Все эти варианты выполнят одну и ту же функцию ``handle_shutdown``.
Все эти варианты вызовут один и тот же хэндлер ``handle_shutdown``.
-----
@@ -115,12 +103,7 @@ InputCommand
``InputCommand`` представляет собой обработанную команду, введённую пользователем. Этот внутренний класс создаётся автоматически при обработке пользовательского ввода. Прямая работа с ним возможна при создании пользовательского обработчика для неизвестных команд.
.. seealso ::
Подробнее о пользовательских обработчиках исключений см. :ref:`здесь <root_error_handling>`.
Создаёт экземпляр обработанной команды.
:param trigger: Триггер команды, извлечённый из пользовательского ввода.
:param input_flags: Флаги, переданные пользователем.
Подробнее о пользовательских обработчиках исключений см. :ref:`здесь <root_error_handling_unknown_command>`.
**Атрибуты:**
@@ -132,7 +115,7 @@ InputCommand
.. py:attribute:: input_flags
:no-index:
Объект `InputFlags`, содержащий все переданные с командой флаги. Автоматически конвертируется из одиночного `InputFlag` в коллекцию.
Объект ``InputFlags``, содержащий все введённые и распаршенные флаги.
.. toctree ::
:hidden: