--- url: /commands/run.md description: >- Тег run — запуск одного действия пользовательской команды из другого, передача параметров, 'self' и ограничения цепочек. --- # Цепочки действий

Тег run передает управление другому действию той же команды. Так одна команда может выбирать, что делать, в зависимости от аргументов, прав или сохраненных данных.

## Как это работает { #how } ```template {% run 'ae04dfed-e19c-49d3-84fc-b05cec59976e' %} ``` * `run` **завершает** текущее действие: все, что написано в шаблоне после выполненного `run`, уже не выполнится, а текст этого действия не отправится. * Затем запускается действие с указанным UUID. У него те же `member`, `message`, `arguments` и `topic`. * UUID берется из меню **«⋯»** нужного действия. ## Передача данных { #with } Добавьте `with` и карту значений — они попадут в `parameters` запускаемого действия: ```template {% run 'ae04dfed-e19c-49d3-84fc-b05cec59976e' with { page: 0, sort: 'trophies' } %} ``` В запущенном действии: ```template {{ parameters.page }} {# 0 #} {{ parameters.sort }} {# trophies #} ``` Еще один способ передать данные — [глобальные переменные](/templates/advanced/tags#global): `{% global total = 100 %}` в одном действии видна во всех следующих действиях цепочки. ## Запуск самого себя { #self } `{% run 'self' %}` перезапускает текущее действие. Это пригодится редко — чаще `'self'` используют в кнопках для листания страниц. ## Пример: подкоманды { #subcommands } Команда `!монеты` с подкомандами `баланс`, `перевод` и `топ`. Действие по умолчанию — «Развилка» типа [«Выполнение кода»](./actions/code): ```template {% set sub = arguments.get(1) | lower %} {% if sub == 'перевод' %} {% run '1f4e7a90-2b3c-4d5e-8f60-718293a4b5c6' %} {% elseif sub == 'топ' %} {% run '2a5b8c01-3d4e-4f60-9a71-8293a4b5c6d7' %} {% else %} {% run '3b6c9d12-4e5f-4061-8b72-93a4b5c6d7e8' %} {% endif %} ``` `!монеты перевод @anna 50` запустит «Перевод», `!монеты топ` — «Топ», а все остальное — «Баланс». ## Ограничения { #limits } | Правило | Почему | |---|---| | `run` работает только в действиях пользовательских команд | В приветствиях и других местах нет действий | | Запускать можно только действия **этой же** команды | UUID чужой команды — ошибка `run_target_not_found` | | Не больше 3 переходов подряд | Защита от бесконечных цепочек. Четвертый переход — ошибка `run_depth_exceeded` | | Квоты общие на всю цепочку | Лимиты шагов, хранилищ, `astral` и отправок считаются вместе для всех действий цепочки — см. [Квоты](/templates/advanced/limits) |