Skip to content

Кастомные команды

Daniil Z edited this page Oct 15, 2021 · 3 revisions

С обновлением 0.12.17 в ReActions активатор COMMAND был отделён в отдельную категорию commands.yml, которая находится в папке плагина. Связано это с невозможностью адекватно оптимизировать работу и реализовать весь функционал команд.

Тем не менее, структура создания команды невероятно проста.

Пример команды

cat:
  command: cat
  alias:
  - kitty
  - котя
  prefix: animals
  register: true
  override: false
  tab: true
  permission: animals.cat
  error:
    no_perm: animals_noperm
    offline: animals_offline
    not_int: animals_notint
  exec: animals_cat
  backup: animals_backup
  args:
    # Пример: /cat white
    'white':
      permission: animals.cat.white
      exec: animals_cat
    # Пример: /cat white imDaniX
    'white ~player':
      permission: animals.cat.white.other
      ignore_after: true
      exec: animals_cat_other
    # Пример: /cat white 6
    'white ~int':
      permission: animals.cat.white.multiply
      exec: animals_cat_multiply
    # Пример: /cat black
    'black':
      permission: animals.cat.black
      error:
        no_perm: animals_noperm_black
      exec: animals_cat_black
    # Пример: /cat orange
    'red|orange|yellow':
      tab: false
      permission: animals.cat.other
      exec: animals_cat_secret

Разбор

Основа

command основная команда, на которую будет окликаться плагин. В данном случае /cat

alias список альтернативных написаний команды. В данном случае /kitty, /котя

prefix префикс команды, который можно использовать для уточнения команды. В данном случае /animals:cat, /animals:kitty, /animals:котя.

register регистрировать ли команду. Это позволит использовать клавишу tab для авто-завершения аргументов.

override отменять ли событие ввода команды - тогда другие плагины не смогут окликнуться на ввод данной команды.

permission право на использование команды в целом. В данном случае animals.cat

error указатели EXEC-активаторов, которые будут использованы в случае той или иной ошибки. В данный момент указателей 5:

# Ошибки
error:
  # При любой ошибке
  any: error_any
  # У игрока нет прав
  no_perm: error_no_perm
  # Указанный игрок оффлайн
  offline: error_offline
  # Аргумент не целочисленное число
  not_int: error_not_int
  # Аргумент не число
  not_float: error_not_float

exec EXEC-активатор, который будет выполнен в случае отсутствия аргументов.

backup EXEC-активатор, который будет выполнен в случае, если ни один из аргументов не будет соответствовать заданным. Если отсутствует - берется exec.

Аргументы

args список аргументов и их настройки.

Все аргументы следует помещать в 'одинарные кавычки'. В аргументах вы можете использовать некоторые заменители:

~player любой игрок онлайн ("imDaniX", "Player"). В примере white ~player

~int целочисленная цифра ("1337", "451"). В примере white ~int

~float цифра с плавующей запятой ("13.37", "0.451").

* любой аргумент ("Например", "это").

Если вы хотите поместить в аргументы конкретно один из таких аргументов, а не заменитель, просто добавьте \ в начало этого аргумента, например \~player(но я даже не знаю, зачем вам это делать).

В случае, если вы хотите использовать один блок аргументов сразу для нескольких слов, используйте |. В примере red|orange|yellow

Для аргументов доступна опция ignore_after(по-умолчанию true) - в случае включения все введеные аргументы, находящиеся после верной цепочки аргументов, будут проигнорированы. Это можно использовать, например, для команды личных сообщений.

personal_message:
  command: msg
  alias:
  - m
  - pm
  - tell
  exec: pm_help
  args:
    '~player *':
       ignore_after: true
       exec: pm_message
       error:
         offline: pm_offline
    '~player':
       exec: pm_no_message
       error:
         offline: pm_offline

Также в настройках аргументов вы можете переписать значения error, permission, override, tab и exec.

В целом, можно отказаться от всех настроек, кроме command - что-то будет установлено по-умолчанию, что-то будет проигнорировано вовсе. Самый минималистичный вариант:

example:
  command: example
  exec: example_command

В данном случае будут применены следующие настройки: prefix: example, register: true, override: false, tab: true, всё остальное же будет проигнорировано. Конечно, можно отказаться и от exec, но тогда смысла в такой команде не будет, кроме регистрации.

Clone this wiki locally