.. _root_api_command_index: Command ======= ``Command`` — это основная единица функциональности в приложении. Каждая команда определяет действие, которое пользователь может выполнить, введя соответствующий триггер. Команды регистрируются в роутерах и формируют интерфейс взаимодействия с приложением. ``Command`` инкапсулирует всю информацию о команде: её триггер (ключевое слово для вызова), описание, набор флагов и список псевдонимов. ----- Инициализация ------------- .. code-block:: python :linenos: __init__(self, trigger: str, *, description: str | None = None, flags: Flag | Flags = DEFAULT_WITHOUT_FLAGS, aliases: list[str] | None = None) -> None Создаёт новую команду для регистрации в роутере. * ``trigger``: Строковый триггер, который пользователь вводит для вызова команды. Является основным идентификатором. * ``description``: Необязательное описание, объясняющее назначение команды. Отображается в справке. * ``flags``: Набор флагов для настройки поведения. Может быть одиночным объектом `Flag` или коллекцией `Flags`. * ``aliases``: Список строковых псевдонимов для основного триггера. **Атрибуты:** .. py:attribute:: trigger Основной триггер команды. Используется для её идентификации при обработке пользовательского ввода. .. py:attribute:: description Текстовое описание команды. Если не передано, используется значение по умолчанию. .. py:attribute:: registered_flags Объект `Flags`, содержащий все зарегистрированные флаги. Автоматически конвертируется из одиночного `Flag` в коллекцию при инициализации. .. py:attribute:: aliases Список строковых псевдонимов. Пуст, если псевдонимы не заданы. **Пример использования:** .. literalinclude:: ../../../code_snippets/command/snippet.py :linenos: .. seealso :: Подробнее про флаги: :ref:`Flags ` и :ref:`Флаги вводимых команд `. ----- Регистрация команд ------------------ Команды регистрируются в роутерах с помощью декоратора ``@router.command()``, после чего становятся доступными для вызова. **Базовый пример:** .. literalinclude:: ../../../code_snippets/command/snippet2.py :linenos: **Команды с флагами:** .. literalinclude:: ../../../code_snippets/command/snippet3.py :linenos: ----- Работа с псевдонимами --------------------- Псевдонимы позволяют вызывать один и тот же обработчик разными триггерами, сохраняя флаги и описание команды. **Пример с псевдонимами:** .. code-block:: python :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 shutdown poweroff halt stop Все эти варианты выполнят одну и ту же функцию ``handle_shutdown``. ----- .. _root_api_command_input_command: InputCommand ------------ ``InputCommand`` представляет собой обработанную команду, введённую пользователем. Этот внутренний класс создаётся автоматически при обработке пользовательского ввода. Прямая работа с ним возможна при создании пользовательского обработчика для неизвестных команд. .. seealso :: Подробнее о пользовательских обработчиках исключений см. :ref:`здесь `. Создаёт экземпляр обработанной команды. :param trigger: Триггер команды, извлечённый из пользовательского ввода. :param input_flags: Флаги, переданные пользователем. **Атрибуты:** .. py:attribute:: trigger :no-index: Строковый триггер, введённый пользователем. .. py:attribute:: input_flags :no-index: Объект `InputFlags`, содержащий все переданные с командой флаги. Автоматически конвертируется из одиночного `InputFlag` в коллекцию. .. toctree :: :hidden: flag possible_values input_flag validation_status flags input_flags