Персональные данные API

Войдите в аккаунт, чтобы увидеть свой токен, slug'и и готовые команды для OBS.

Команды чата (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 синтаксис

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

Дополнительные действия команд

ТокенОписаниеПримерТребуемый scope
{pin}Закрепить сообщение в чатеПравила чата!
{pin}
moderator:manage:chat_messages
{delete}Удалить сообщение{delete}moderator:manage:chat_messages
{timeout:600:причина}Выдать таймаут пользователю{timeout:600:Спам}moderator:manage:banned_users
{announce:blue:текст}Цветное объявление{announce:purple:Внимание!}moderator:manage:announcements
{shoutout} / {shoutout:username}Официальный шаутаут Twitch{shoutout:streamer}moderator:manage:shoutouts
{vip}Добавить VIP статус{vip}
Вы VIP!
channel:manage:vips
{unvip}Убрать VIP статус{unvip}channel:manage:vips
{marker:описание}Создать маркер в VOD{marker:Эпик момент!}channel:manage:broadcast
{raid:username}Начать рейд{raid:friendstreamer}channel:manage:raids
{commercial:60}Запустить рекламу{commercial:60}
Реклама 60 сек
channel:edit:commercial
{slow:30} / {slowoff}Медленный режим (вкл/выкл){slow:30}moderator:manage:chat_settings
{followers:10} / {followersoff}Режим только для подписчиков{followers:10}moderator:manage:chat_settings
{emoteonly} / {emoteonlyoff}Режим только эмоций{emoteonly}moderator:manage:chat_settings
{counter:name:action:value}Счётчик (сохраняется между сессиями)Смерть #{counter:deaths:increment}
{repeat:N:текст}Повторить текст N раз{repeat:3:🔥} HYPE!
{random_user}Случайный зритель из текущего чатаПобедитель: {random_user}
{time}Текущее времяВремя: {time}
{date}Текущая датаДата: {date}
{uptime}Время работы стримаСтрим идёт: {uptime}
Важно: Для использования дополнительных действий необходимо переподключить Twitch аккаунт и предоставить новые разрешения (OAuth scopes).

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

Привет, {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=10}
{math dbl = {var:base} * 2}
{math quad = {var:dbl} * 2}
base={var:base} dbl={var:dbl} quad={var:quad}

Random список

Вы получили: {rand:["Меч","Щит","Зелье","Свиток"]}!

Клип + пауза

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

Счётчик смертей

!death -> Упс! Смерть #{counter:deaths:increment}
!deaths -> Всего смертей: {counter:deaths:get}
!resetdeaths -> {counter:deaths:reset}Счётчик сброшен!

Розыгрыш среди зрителей

!giveaway ->
Случайный победитель: {random_user} 🎉
{shoutout:{random_user}}

Маркер с таймстампом

!clip ->
{marker:Момент для клипа}
{clip}
Клип создан и отмечен в VOD!

Повторение для эффекта

!hype ->
{repeat:3:🔥} {announce:purple:ЧТО-ТО ПРОИСХОДИТ!} {repeat:3:🔥}

Информация о стриме

!info ->
📅 Дата: {date}
🕐 Время: {time}
⏱️ Uptime: {uptime}

Розыгрыш с временем

!giveaway ->
🎉 Розыгрыш в {time}!
Победитель: {random_user}
{shoutout:{random_user}}

Автомодерация с закреплением

!rules ->
Правила чата: 1) Уважение 2) Без спама 3) Позитив
{pin}
{clip} {delay:500} Готово!

Конфеты без else

{var:give={rand:1-10}}
{if give > 7 then}
Вам повезло! Получаете {var:give} конфет
{end}

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

{var:a={rand:1-100}}
{var:b={rand:1-100}}
{math sum = {var:a} + {var:b}}
Значения: a={var:a} b={var:b}
Скромная сумма: {var:sum}

Закреплённые правила

Правила чата:
1. Уважайте других зрителей
2. Без спама и флуда
3. Следуйте инструкциям модераторов
{pin}

Шаутаут с объявлением

{announce:primary:Обратите внимание на {target} - отличный стример!}
{shoutout}
Заходите на канал {target}!

Умная модерация

{var:warned={arg1}}
{if warned > 3 then}
{timeout:600:Повторное нарушение}
{announce:orange:{target} получил таймаут на 10 минут за повторное нарушение}
{var:warned=0}
{else}
{math warned = {var:warned} + 1}
{announce:blue:{target}, предупреждение {var:warned}/3. Следите за поведением!}
{end}

Автоматический VIP за активность

{vip}
{announce:primary:{target} получил VIP статус за активность!}
{marker:Новый VIP - {target}}
Поздравляем!

Подготовка к рейду

{announce:blue:Подготовка к рейду на {arg1}!}
{marker:Рейд на {arg1}}
{delay:5000}
{announce:orange:5 секунд до рейда!}
{delay:5000}
{raid:{arg1}}
{announce:green:Рейд начат! Всем спасибо за стрим!}

Создание маркера

{marker:{arg1}}
Момент сохранён в записи!

Управление режимами чата

{slow:45}
{followers:10}
{announce:blue:Включён медленный режим (45с) и фильтр подписчиков (10+ мин)}

Сброс режимов чата

{slowoff}
{followersoff}
{emoteonlyoff}
{announce:green:Все ограничения чата сняты!}

Рекламная пауза

{announce:blue:Небольшой рекламный перерыв (60 секунд)}
{commercial:60}
Спасибо за понимание!

Комплексная команда приветствия

{var:first_time={arg1}}
{announce:green:Добро пожаловать, {target}!}
{if first_time == 1 then}
{announce:primary:Это первый визит {target} на канале!}
{vip}
{target} получил VIP за первое посещение!
{var:first_time=0}
{else}
Рады видеть тебя снова, {target}!
{end}
{shoutout}

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

ПроблемаПричинаРешение
Ошибка парсинга: missing endПропущен {end}Закрывайте каждый {if}
delay > 1000Максимальная разрешённая задержкаСнизьте до ≤1000

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

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

Экспорт / JSON

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

{
  "name": "hello",
  "type": "actions",
  "cooldown": 5,
  "version": 1,
  "actions": [
    {"type": "say", "text": "Привет, {user}!"},
    {"type": "delay", "milliseconds": 300},
    {"type": "say", "text": "Готово"}
  ]
}

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

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

Примечания

  • {var:имя} пуст, если переменная не установлена.
  • delay — только короткие паузы (максимум 1000мс).
  • Доступ и кулдауны проверяются до выполнения сценария.
  • DSL v2.0: Некоторые действия требуют, чтобы вы были модератором своего канала (обычно это так для владельца канала).
  • DSL v2.0: Действия {pin} и {delete} имеют ограниченную функциональность в текущей версии.
  • DSL v2.0: Для {timeout} максимальная длительность — 1,209,600 секунд (14 дней).
  • DSL v2.0: Для {commercial} доступны только значения: 30, 60, 90, 120, 150, 180 секунд.

Версия документа: DSL v2.0 | Последнее обновление: Октябрь 2025