---
url: https://docs.juniper.bot/cmd/custom.md
description: >-
  Вы можете создавать свои команды, которые могут выполнять определенные
  действия.
---

# Пользовательские команды

Вы можете создавать свои команды, которые могут выполнять определенные действия.

Пользовательские команды (кастомные команды) создаются и настраиваются в [панели управления](../../guide#configure) сервера во вкладке с названием "Команды". Любую пользовательскую команду можно отключить при необходимости и настроить необходимые права доступа аналогично встроенным командам бота.

## Интерфейс настроек { #interface }

У каждой команды есть определенный набор общих настроек:

![custom](./custom.png)

* **Команда** — имя команды, по которому она будет вызываться в Discord;
* **Действие команды** — [действие](actions/index) по умолчанию, которое будет выполнено для этой команды;
* **Краткое описание** — просто краткое описание данной команды, которое отображается в списке пользовательских команд, а также в справке самого бота в Discord;
* **Группа** — название группы команды в свободной форме, по которой команды будут сгруппированы в списке на сайте;
* **Права доступа и выполнение** — описывает права доступа к команде по ролям, каналам, типу каналов и как часто можно вызывать команду (кулдаун);
* **Контекстные меню** — позволяет включить и настроить вызов этой команды по нажатию пункта в [контекстном меню](#context-menus) в Discord;
* **Слэш-команда** — позволяет включить и настроить эту команду как слэш-команду, более подробно описано в разделе [Слэш-команда](#slash).

## Контекстные меню { #context-menus }

Вызов действия пользовательской команды можно осуществить по нажатию пункта контекстного меню участника или сообщения:

* В случае контекстного меню сообщения, шаблон действия получает экземпляр этого сообщения в переменной [`message`](../../message-templates/types/discord/message);
* В случае контекстного меню участника, шаблон действия получает экземпляр этого участника в [`arguments.targetMember`](../../message-templates/types/custom-commands/arguments);

::: warning Ограничения
Контекстные меню имеют некоторые ограничения:

1. Максимум 15 пунктов контекстных меню сообщения;
2. Максимум 15 пунктов контекстных меню участника.
   :::

## Слэш-команда { #slash }

Пользовательская команда может быть включена как [Слэш-команда](../slash/index) с возможностью использования параметров и даже разделения на подкоманды.
Интерфейс настроек слэш-команды интуитивно понятен и не требует пояснения.

Все указанные участником параметры слэш-команды передаются в действие пользовательской команды как часть переменной [`arguments`](../../message-templates/types/custom-commands/arguments).

Для получения нужного параметра следует использовать следующий синтаксис:

```template
{{ arguments.getOption('имя_параметра') }}
```

Кроме этого, можно получить список всех параметров определённого типа:

```template
{{ arguments.getOptionsByType('MEMBER') }}
```

Более подробно в описании типа данных [Arguments](../../message-templates/types/custom-commands/arguments).

::: warning Ограничения
Слэш-команды имеют некоторые ограничения:

1. Все ограничения, описанные в общем разделе [Слэш-команд](../slash/index#limitations);
2. Корневая слэш-команда может содержать либо параметры, либо подкоманды, но не вместе;
3. Максимум 25 параметров на корневую команду или подкоманду;
4. Максимум 25 подкоманд;
5. Максимум 25 вариантов выбора для параметров строк или чисел;
6. Максимум 100 пользовательских команд с включенной слэш-командой.
   :::

## Горячие клавиши { #hotkeys }

В диалоге создания или редактирования пользовательской команды можно использовать горячие клавиши:

* &#x20;— быстрое сохранение команды;
* &#x20;— переход в полноэкранный режим активного поля шаблона сообщения.
