Команды чата (DSL)

Основной способ описания сценариев теперь — DSL. JSON оставлен для экспорта и обратной совместимости.

Типы

  1. text — одиночный шаблон.
  2. actions — многошаговый сценарий (DSL).

Плейсхолдеры

PlaceholderНазначение
{user}Пользователь вызвавший команду
{target}Цель (если указана)
{rand}Случайное число 0–100
{rand:MIN-MAX}Случайное число диапазона
{rand:["A","B"]}Случайный элемент из списка
{arg1}, {arg2}Аргументы команды
{var:name}Переменная из сценария

Доступ и лимиты

ДоступКто может
allЛюбой пользователь
authАвторизованные
ownerВладелец канала
staffВладелец или персонал

Cooldown и лимиты в минуту защищают от спама.

DSL синтаксис

Каждая строка — текст или токен в скобках. Пустые строки игнорируются.

СтрокаЗначениеAction
(текст)Добавить текстtext
{var:x=10}Установить переменнуюset_var
{math y = {var:x} * 2}Вычислениеmath
{random:["A","B"]}Случайный выборrandom_choice
{random:1-10}Число диапазона (в тексте)text
{delay:500}Пауза ≤1000мсdelay
{clip}Создать клипclip
{if points > 5 then}Начало условияif
{else}Альтернативная ветка
{end}Закрыть блок

Операторы условий: == != > <. Переменные в условии пишутся без префикса {var:}.

Быстрый старт

Привет, {user}!
{delay:300}
Готово

Примеры

Условие с else

{var:points={rand:1-10}}
{if points > 5 then}
Много очков: {var:points}
{else}
Мало очков: {var:points}
{end}

Вложенные условия

{var:x={rand:1-10}}
{if x > 3 then}
x>3: {var:x}
  {if x > 7 then}
  x>7!
  {end}
{else}
x<=3: {var:x}
{end}

Math цепочка

{var:base={rand:1-5}}
{math dbl = {var:base} * 2}
{math quad = {var:dbl} * 2}
base={var:base} dbl={var:dbl} quad={var:quad}

Random список

{random:["Привет","Hello","Yo"]}
{user}

Клип + пауза

Создаю клип
{clip}
{delay:500}
Готово!

Конфеты без else

{var:give={rand:1-10}}
{user} дарит {var:give} конфет {target}!
{if give > 7 then}
ОГО щедрость!
{end}

Комплексный сценарий

{var:a={rand:1-10}}
{var:b={rand:1-10}}
{math sum = {var:a} + {var:b}}
Значения: a={var:a} b={var:b}
{if sum > 12 then}
Большая сумма: {var:sum}
{else}
Скромная сумма: {var:sum}
{end}

Частые ошибки

ПроблемаПричинаРешение
Ошибка парсинга: missing endПропущен {end}Закрывайте каждый {if}
Пустой {var:x}Переменная не установленаДобавьте {var:x=...} раньше
Bad random listНевалидный JSON внутри {random:[...]}Исправьте кавычки/запятые
Math даёт 0Ошибка выраженияПроверьте скобки и переменные
delay > 1000ОграничениеСнизьте до ≤1000

Формирование ответа

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

Экспорт / JSON

DSL при экспорте конвертируется в массив action-объектов.

{
  "name":"имя",
  "type":"actions",
  "actions":[...],
  "cooldown":5,
  "version":1
}

Legacy конструктор

Старый визуальный конструктор оставлен для старых команд. При наличии DSL он имеет приоритет и JSON пересобирается автоматически.

Примечания

  • {var:имя} пуст, если переменная не установлена.
  • delay — только короткие паузы.
  • Доступ и кулдауны проверяются до выполнения сценария.

Версия документа: DSL v1