---
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) |