--- url: /commands/actions.md description: >- Действия пользовательских команд — типы, общие настройки, UUID, параметры и запуск одного действия из другого. --- # Действия

Действие — это то, что делает бот в ответ на команду, нажатие кнопки или отправку формы. У команды может быть от 1 до 10 действий.

## Когда запускается действие { #triggers } | Что происходит | Какое действие запустится | |---|---| | Участник пишет команду | Действие по умолчанию | | Участник нажимает кнопку под сообщением | Действие, указанное у кнопки | | Участник выбирает пункт меню | Действие, указанное у меню | | Участник отвечает на последний вопрос формы | Действие, указанное в форме как «после отправки» | | Другое действие выполняет `{% run %}` | Указанное в `run` действие | ## Общие настройки { #settings } У каждого действия, независимо от типа, есть: | Поле | Описание | |---|---| | **Название** | Для списка действий и выпадающих меню, до 64 символов | | **Тип** | Что делает действие — см. ниже | | **Описание** | Подсказка для себя, до 256 символов | | **Переопределить права** | Дополнительные [поля вызова](../settings#invocation) именно для этого действия. Они проверяются **вместе** с правами команды | | Меню **«⋯»** | Скопировать UUID, сделать копию действия, удалить | ::: tip Зачем переопределять права Пусть команду `!бан` могут вызывать хелперы, но кнопку «Подтвердить» под ней должен нажимать только администратор. Включите «Переопределить права» у действия «Подтвердить» и разрешите его только администраторам. ::: ## Типы действий { #types }
Отправка сообщения Самый частый тип: сообщение по шаблону, с кнопками, картинкой или опросом. Форма Вопросы по очереди — ответы получает следующее действие. Изменение ролей Выдать или снять роли бота вызвавшему или упомянутому. Встроенная команда Свое название для встроенной команды или готовые аргументы к ней. Выполнение кода Только выполнить шаблон: сохранить данные или выбрать, что запустить дальше.
## UUID действия { #uuid } У каждого действия есть **UUID** — уникальный идентификатор вида `59f7f318-17c9-45b8-be61-33c1f89d54ba`. Он нужен, чтобы в шаблоне сослаться на другое действие: указать, что запускает кнопка, или передать управление через `run`. Скопировать UUID можно из меню **«⋯»** действия. ```template {% do button('SUCCESS', 'accept', 'Подтвердить', '✅', '59f7f318-17c9-45b8-be61-33c1f89d54ba') %} ``` Вместо UUID можно написать `'self'` — это «текущее действие». Удобно для кнопок «еще раз» и листания страниц. ::: info UUID работает только внутри команды Кнопка или `run` могут запускать действия только своей команды. Если указать UUID действия из другой команды, редактор покажет ошибку. ::: ## Параметры { #parameters } Во все шаблоны действий передается переменная `parameters` — «сумка» для данных, которые нужно передать дальше: * из действия, отправившего сообщение, — в действия кнопок под этим сообщением; * из одного действия — в другое, запущенное через `run`. ```template {% do parameters.store('memberId', arguments.targetMember.id) %} ``` Параметры живут 15 минут с последнего обращения. Подробнее — в статье [Параметры](/templates/storage/parameters). ## Запуск одного действия из другого { #run } Тег `{% run %}` завершает текущее действие и запускает другое действие этой же команды: ```template {% if arguments.get(1) == 'топ' %} {% run 'ae04dfed-e19c-49d3-84fc-b05cec59976e' %} {% endif %} ``` Подробнее — в статье [Цепочки действий](../run).