Skip to main content

Документация по функциям команд

В этом разделе описаны все доступные функции (действия, условия, опции) для настройки команд в конфиге DiscordBM.


Основные поля команды

  • name — имя команды (обязательное).
  • description — описание команды.
  • context — где доступна команда: server, dm или both.
  • ephemeral — делать ли ответы эфемерными (по умолчанию: false).
  • options — параметры, которые пользователь может указать при вызове команды.
  • conditions — условия, при которых команда или действие выполняется.
  • actions — действия, которые выполняются при успешном выполнении команды.
  • fail-actions — действия, которые выполняются при ошибке или невыполнении условий.

Опции (options)

Позволяют добавить параметры для команды.

  • name — имя опции.
  • type — тип (STRING, USER, CHANNEL, INTEGER, BOOLEAN, ROLE, MENTIONABLE).
  • description — описание опции.
  • required — обязательна ли опция (true/false).

Пример:

options:
- name: "target"
type: "STRING"
description: "Кого поприветствовать"
required: true

Условия (conditions)

Позволяют ограничить выполнение команды или действия.

  • type: permission — проверка роли пользователя.
    • role_id: ID роли
  • type: chance — случайное выполнение с вероятностью.
    • percent: вероятность (0-100)

Пример:

conditions:
- type: "permission"
role_id: "1234567890123456789"
- type: "chance"
percent: 10

Действия (actions)

type: send_message

Отправляет сообщение пользователю или в канал.

  • message — текст сообщения (поддерживаются плейсхолдеры).
  • response_type — тип ответа (REPLY, EDIT_MESSAGE, RANDOM_REPLY, MODAL, REPLY_MODAL, DIRECT, CHANNEL, REPLY_TO_MESSAGE).
  • label — метка для дальнейших действий (например, для удаления).
  • embed — объект embed-сообщения (см. ниже).

Пример:

actions:
- type: send_message
message: "Hello, {user}!"
response_type: REPLY
label: welcome_message

Ответить на сообщение.

  • REPLY_TO_MESSAGE - ответ на сообщение
  • message — ответ.
  • reply_message_id - указать ID сообщения
  • reply_mention_author - пинговать автора сообщения

Пример:

actions:
- type: send_message
response_type: REPLY_TO_MESSAGE
message: "Ответ на конкретное сообщение!"
reply_message_id: "{option:message_id}"
reply_mention_author: true

Отправить рандомный ответ.

  • RANDOM_REPLY - выбор рандомной отправки
  • message — ответы.

Пример:

actions:
- type: send_message
response_type: RANDOM_REPLY
message:
- "Привет!"
- "Здравствуй!"
- "Хай!"
- "Добрый день!"

type: send_to_channel

Отправляет сообщение или embed в указанный канал.

  • message — текст сообщения.
  • embed — объект embed-сообщения.
  • label — метка для дальнейших действий.

Пример:

actions:
- type: send_to_channel
message: "Привет, канал!"
label: specific_message

type: button

Добавляет кнопку к сообщению.

  • label — текст на кнопке.
  • style — стиль (PRIMARY, DANGER, LINK SUCCESS, SECONDARY).
  • id — уникальный идентификатор кнопки.
  • url — ссылка (для стиля LINK).
  • emoji — эмодзи на кнопке.
  • disabled — отключена ли кнопка.
  • form_name — имя формы для открытия по кнопке.
  • required_role — ID роли, необходимой для нажатия.
  • message — сообщение при нажатии.
  • timeout — время жизни кнопки (ms или infinite).

Пример со ссылкой:

actions:
- type: button
label: "Open the site"
style: "LINK"
url: "https://example.com"
emoji: "🔗"
timeout: infinite
disabled: false

Пример с формаой:

actions:
- type: button
label: "Open the site"
style: "LINK"
form_name: "feedback-form"
required_role: "1234567890123456789"
emoji: "🔗"
timeout: infinite
disabled: false

type: edit_component

Редактирует компонент (например, кнопку) в сообщении.

  • target_message — метка сообщения.
  • component_id — ID компонента (например, кнопки).
  • label — новый текст.
  • style — новый стиль.
  • disabled — отключить/включить компонент.

Пример:

actions:
- type: edit_component
target_message: "welcome_message"
component_id: "btn_click"
label: "Updated Button"
style: DANGER
disabled: false

type: delete_message

Удаляет сообщение по метке.

  • label — метка сообщения.
  • delete_all - удалять все сообщения с меткой (true) или только последнее (false), если (delete_all) не указан то по умолчанию true
  • response_message — сообщение-ответ после удаления.

Пример:

actions:
- type: delete_message
label: test_message
delete_all: true
response_message: "Test message has been deleted."

type: send_form

Открывает форму для пользователя.

  • form_name — имя формы.

Пример:

actions:
- type: send_form
form_name: "feedback-form"

type: add_role

Добавляет роль пользователю.

  • role_id — ID роли.

Пример:

actions:
- type: add_role
role_id: "1234567890123456789"

type: remove_role

Удалить роль у пользователя.

  • role_id — ID роли.

Пример:

actions:
- type: remove_role
role_id: "1234567890123456789"

type: resolve_placeholders

Вставляет значения плейсхолдеров в шаблон.

  • template — строка-шаблон с плейсхолдерами.
  • player — имя игрока или переменная.

Пример:

actions:
- type: resolve_placeholders
template: "Привет, %player_name%!"
player: "{player}"

type: send_page

Отправляет страницу по ID.

  • page_id — идентификатор страницы.

Пример:

actions:
- type: send_page
page_id: "1-embed"

Пример полной команды

- name: "hello"
description: "Says hello to the user"
context: "server"
options:
- name: "target"
type: "STRING"
description: "Who to greet"
required: true
conditions:
- type: "permission"
role_id: "1234567890123456789"
actions:
- type: "send_message"
message: "Hello, {user}! You greeted {target}."
fail-actions:
- type: send_message
message: "No Permission"