Перейти к содержанию

Конструктор правил

Конструктор правил настраивает, как PulseCaster сам реагирует на события канала: сообщения в чате, команды, награды за баллы, рейды, подписки, донаты, старт стрима и другие ситуации.

Правило читается сверху вниз:

Когда → Если → Сделать → Ограничения
  • Когда — на какое событие правило отзывается. Для команды здесь же её имя, для награды — какая награда.
  • Если — дополнительные условия: роль зрителя, слова в сообщении, время, шанс.
  • Сделать — что сделать: ответить, наказать, изменить счётчик. Список действий можно раскрыть в сценарий с ветками, кубиком и «Одним из вариантов».
  • Ограничения — как часто правило может срабатывать и что будет с правилами ниже.

Например: Когда: Первое сообщение зрителя за стрим → Если: кроме модераторов → Сделать: ответить в чат.

Нужна помощь разработчика?

Напишите mrgorkiy в Telegram. Укажите страницу, ожидаемый результат, что произошло и шаги для повторения. Можно приложить скриншот или короткое видео. Перед отправкой закройте токены, коды подтверждения и приватные ссылки OBS.

Когда использовать правила

Правила удобны, когда действие повторяется и его не хочется делать руками:

  • приветствовать первое сообщение зрителя;
  • отвечать на свои команды в чате;
  • реагировать на покупку конкретной награды Twitch;
  • бросать кубик по награде и разводить исходы;
  • фильтровать стоп-слова, ссылки, капс или повторяющийся текст;
  • выдавать таймаут по понятному условию;
  • считать повторяющиеся события через счётчики;
  • отправлять сообщение на старт стрима, рейд, подписку или донат.

Дайте важному правилу понятное название и описание, чтобы через месяц было ясно, зачем оно.

Как открыть раздел

Откройте страницу Владелец и перейдите в Конструктор правил. Наверху четыре вкладки:

Вкладка Что там
Правила все правила канала по порядку проверки
Шаблоны готовые заготовки по категориям
Проверить сообщение прогнать сообщение по всем правилам и увидеть, кто ответит
Журнал последние срабатывания: что бот отправил и что пропустил

У каждого правила свой адрес: ссылку на открытое правило можно отправить модератору.

Недоступные триггеры и действия не спрятаны, а показаны с причиной. Обычно не хватает прав Twitch у владельца канала или PulseCasterBot ещё не модератор — обновите права на странице владельца.

Пример: ответ на команду

Соберём команду !расписание, которая отвечает: Эфиры: вт и чт в 19:00.

Учебный макет. В поле имени — «расписание» без !, в чат отправляют !расписание.
  1. Нажмите Новое правило, задайте название Расписание.
  2. В Когда выберите Команда, в поле имени введите расписание без !.
  3. Оставьте Если без условий: ответ должен получать каждый вызвавший команду зритель.
  4. В Сделать добавьте Ответить в чат с текстом своего расписания.
  5. В разделе Проверка отправьте тестовый текст !расписание и проверьте ожидаемый ответ.
  6. Сохраните и включите правило. Отправьте !расписание в Twitch-чат, затем проверьте Журнал.

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

Порядок правил

Бот проверяет правила сверху вниз по списку Правила. Сработать могут несколько правил подряд, пока одно из них не остановит остальные.

Порядок меняют стрелки у правила, а на компьютере — ещё и перетаскивание за ручку слева. Новое правило встаёт в конец списка. Модерацию ставьте выше развлекательных ответов.

Сообщение в чате проверяется сразу всеми правилами чата в одном общем порядке: Сообщение в чате, Команда, Первое сообщение зрителя… и Возврат после…. Поэтому правило на команду выше в списке сработает раньше правила на любое сообщение и может его остановить.

Выключить правило, не открывая его, можно переключателем в списке.

Быстрый старт через шаблон

  1. Откройте вкладку Шаблоны.
  2. Найдите сценарий через поиск или категорию. Звёздочкой отметьте нужные — избранное своё у каждого канала.
  3. Нажмите Создать по шаблону: откроется новое правило, ещё не сохранённое.
  4. Проверьте название, Когда, Если и Сделать.
  5. Выключите правило переключателем вверху, если хотите сначала всё проверить.
  6. Нажмите Создать правило.
Категория Для чего
Модерация стоп-слова, ссылки, капс, таймауты, удаление сообщений
Вовлечение приветствия, реакции, случайные ответы
Счетчики счётчики команд и событий, таймеры «сколько прошло без…»
Команды свои чат-команды с ответами
Расписание таймеры и реакции по времени
События рейды, подписки, донаты, старт или конец стрима

Шаблоны модерации наказывают только обычных зрителей и сабскрайберов: в них есть исключение «роль модератор, старший модератор, VIP или стример». Если VIP тоже должны попадать под фильтр, уберите VIP из исключения.

Как создать правило вручную

Нажмите Новое правило. Вверху:

Поле Что писать
Название правила коротко: Приветствие новичка, Фильтр ссылок, Кубик за награду
+ Описание зачем правило нужно и когда оно должно срабатывать
Включено работает ли правило прямо сейчас

Внизу экрана — панель сохранения. Она показывает, есть ли несохранённые изменения. Если уйти с правила, не сохранив его, — кнопкой «Назад», по ссылке меню или закрыв вкладку, — бот переспросит.

Совет

Сначала создавайте правило выключенным, проверяйте его в разделе Проверка и только потом включайте. Особенно это важно для таймаутов, банов и удаления сообщений.

Когда

Нажмите Изменить, чтобы выбрать событие:

Событие Пример использования
Сообщение в чате фильтр слов, ссылок, капса или повторов
Команда !еда, !соцсети, !помощь и другие свои команды
Награда за баллы реакция на конкретную Twitch-награду
Донат благодарность с именем донатера, суммой, валютой и сообщением
Фоллов сообщение новому фолловеру
Рейд приветствие рейда
Новая подписка, Продление подписки, Подарочная подписка благодарности за поддержку
Массовый подарок подписок благодарность за несколько подарков сразу
Старт стрима, Стоп стрима автоматическое сообщение в нужный момент
Смена названия стрима, Смена категории стрима сообщить чату, во что теперь играем
Достигли N зрителей отметить порог зрителей
Первое сообщение зрителя вообще, …за стрим, …за день приветствие нового или вернувшегося зрителя
Возврат после N минут молчания, Первое сообщение после N дней молчания реакция, когда человек снова написал после паузы
Таймер (каждые N минут) регулярное сообщение, пока идёт стрим
Тишина в чате N минут мягко оживить чат, когда никто не пишет, — тоже только во время стрима

Команда. Имя пишется в поле Команда без ! — он уже стоит перед полем. В Другие названия через запятую перечислите синонимы: сработает любое из них. Без имени правило сработает на любую команду в чате — конструктор предупредит об этом и переспросит при сохранении.

Настройка Что делает
Прощать опечатки !првиет сработает как !привет; Сколько опечаток — от 1 до 3. Короткие команды с опечатками легко спутать — включайте для длинных
Исправлять раскладку !ghbdtn, набранное в английской раскладке, сработает как !привет
Похожие буквы латинские a, e, o и похожие кириллические буквы считаются одинаковыми
Скрытая команда команда работает, но не попадает в !команды и !help

Аргументы команды — слова после команды: в !дуэль viewer42 100 первый аргумент — viewer42. У аргумента есть имя, тип, значение по умолчанию и отметка Обязательный. В ответах аргумент подставляется как {arg:1} по номеру или {arg:имя} по имени — имя латиницей.

Награда за баллы. Отметьте награды в списке Какие награды. Если список не загрузился, впишите ID награды вручную. Без выбранной награды правило сработает на покупку любой награды. Слова из текста, который зритель ввёл при покупке, тоже можно разобрать как аргументы.

Таймер, тишина, возвраты — у каждого свой интервал. У таймера есть Только когда в чате пишут: таймер молчит, если за последние минуты в чате не было сообщений.

Если

Без условий правило срабатывает на каждое событие из Когда. Для простого ответа на команду это нормально, для модерации — опасно.

Условия собираются в три списка, как в фильтрах почты:

Список Когда правило срабатывает
Выполняется всё это выполнены все условия списка
И хотя бы одно из выполнено хотя бы одно условие списка
Кроме случаев, когда ни одно условие списка не выполнено

Кнопки + Условие, + Хотя бы одно из… и + Исключение открывают выбор типа условия с поиском. Условие можно перенести в другой список выбором у карточки: Обязательно, Одно из, Кроме.

Частые условия:

Условие Для чего
Текст содержит найти слово или фразу в сообщении
Текст равен реагировать только на точное сообщение
Совпадение по слову искать отдельные слова без случайных совпадений внутри других слов
Есть ссылка ловить ссылки
CAPS выше % реагировать на слишком много заглавных букв
Повторы выше % ловить спам одинаковыми словами
Роль пользователя включить или исключить зрителей, сабов, VIP, модераторов
Логин пользователя правило только для конкретных людей
Шанс % срабатывать не всегда, а с вероятностью; новое условие начинается с 50 %
Аргумент команды есть требовать текст после команды
У награды есть текст проверять, ввёл ли зритель текст при покупке
Минут от старта >=, Минут от старта <= включать правило только в начале или после разгона стрима
День недели, Время суток ограничить правило расписанием
Значение счётчика сравнить счётчик с числом: =, ≠, >, ≥, <, ≤, с диапазоном от … до (границы включаются) или со значением другого счётчика; оба ключа могут содержать {login}
Изменение счётчика на сколько правило уже изменило счётчик за это срабатывание — те же сравнения с числом и от … до
Счётчик создан Уже создан или Ещё не создан — поймать первое обращение

Счётчика, которого ещё нет, Значение счётчика считает нулём, как {counter:…} в ответах. Поэтому «= 0» сработает и у нового зрителя; чтобы отличить нового от обнулённого, добавьте Счётчик создан. Стартовое значение нового счётчика задаётся у действия: Стартовое значение, если счётчика ещё нет у Увеличить счетчик и Умный счетчик. Счётчик создаётся с ним, и только потом действие меняет значение; у уже созданного счётчика поле ни на что не влияет.

Изменение счётчика имеет смысл в шаге после действия со счётчиком: до него изменение равно нулю. Например, после Умного счетчика ветка с Изменение счётчика > 5 может ответить «Вот это прибавка!».

Группы «И / ИЛИ»

Когда трёх списков мало, нажмите Сложнее: группы «И / ИЛИ». Условия откроются деревом:

  • группа Все условия (И) выполнена, когда выполнены все её пункты;
  • группа Любое из условий (ИЛИ) — когда хотя бы один;
  • НЕ у условия переворачивает его: НЕ Текст содержит "http" пропускает только сообщения без ссылки;
  • НЕ: сработает, когда группа не выполнилась переворачивает итог всей группы;
  • + Группа условий добавляет вложенную группу.

Если дерево снова укладывается в три списка, появится кнопка Показать простыми списками.

Совпадение по слову и стоп-слова

Для стоп-слов лучше Совпадение по слову, а не Текст содержит.

Строгость Когда использовать
Осторожно меньше ложных срабатываний, подходит для спорных слов
Нормально хороший стартовый вариант для большинства фильтров
Жёстко ловит больше обходов, но сначала лучше проверить в тестовом режиме
Ручная настройка если нужно отдельно настроить повторы, разделители, похожие символы и опечатки

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

Если правило может наказать зрителя, не начинайте с самого жёсткого режима и сначала проверьте примеры.

Сделать

Действия выполняются сверху вниз. + Действие открывает выбор с группами Ответить, Модерация, Счётчики и Ход сценария. У карточки действия есть стрелки порядка, копия и удаление.

Действие Что делает
Ответить в чат отправляет один из вариантов ответа сообщением, ответом на сообщение, от третьего лица или анонсом
Закрепить сообщение бот пишет сообщение в чат и закрепляет его до конца стрима или на 1–30 минут; закрепляет бот (если он модератор канала) или стример. Пример: триггер Старт стрима → закреп с соцсетями или условиями розыгрыша на весь эфир — готовый шаблон Закреп на весь стрим
Суперспособность генерирует для участника события ИИ-суперспособность и отправляет её в чат
Задержка делает паузу перед следующим действием
Таймаут выдаёт таймаут выбранному пользователю, можно случайной длительности или по ролям
Бан блокирует выбранного пользователя
Удалить сообщение удаляет сообщение, на котором сработало правило
Предупредить отправляет предупреждение через Twitch
Отправить шепот отправляет личное сообщение через PulseCasterBot; если у бота нет user:manage:whispers, может использовать токен владельца с этим scope
Выбрать случайного зрителя выбирает зрителя и сохраняет его как цель для следующих действий
Восстановить модератора возвращает роль модератора после таймаута, если она была до наказания
Закончить правило прекращает дальнейшие действия и шаги этого правила; правила ниже по списку это сообщение тоже не проверят, а встроенная команда промолчит — как при Остановить правила ниже
Увеличить счетчик меняет счётчик на заданное число; с галочкой Сбросить таймер «без события» заодно запускает таймер счётчика заново
Установить счетчик ставит счётчику точное значение
Сбросить счётчик ставит значение после сброса (обычно 0) и запускает таймер «без события» заново; {counter.previous:…} покажет, сколько продержались
Умный счетчик добавляет случайное число из диапазона «От» — «До»; с галочкой Сбросить таймер «без события» заодно запускает таймер заново

Лимит действия «Суперспособность»

Это действие расходует лимит AI-ответов и выполняется не более одного раза за стрим для каждого зрителя. Его удобно использовать с триггером подписки или фоллова: каждый новый зритель получает суперспособность один раз за стрим, повторное событие того же зрителя в этом стриме действие не запустит.

Осторожно с модерацией

Таймауты, баны и удаление сообщений проверяйте особенно внимательно. Если есть сомнения, сначала замените наказание на обычный ответ в чат или включите Тестовый режим.

Ограничения whisper

Twitch принимает whisper только от аккаунта с подтверждённым номером телефона. Даже успешный ответ API не гарантирует доставку: Twitch может отфильтровать сообщение по своим антиспам-правилам.

Модератор без разрешения «Действия от лица стримера»

Модератор собирает любые правила, где всё выполняет бот: ответы в чат, счётчики, паузы, а также таймаут, бан, предупреждение, удаление и шёпот с исполнителем Только бот. Закрыты только действия, которые могут уйти от вашего имени: От лица стримера, если можно, иначе бот и Только от лица стримера, анонсы (без права на анонсы у бота они отправляются вашим аккаунтом) и Восстановить модератора.

Сценарий: ветки, кубик и «Один из вариантов»

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

Шаг Что делает
Если… иначе… ветки с условиями: Если, + Иначе, если, + Иначе. Какие ветки выполнять — только первую подходящую или все подходящие
Кубик бросает кубик (d4–d100 или свой диапазон) и выполняет исход, в который попало число. Имя результата сохраняет бросок для текстов: {arg:var:roll_main}. Внутри исхода работает {roll}
Один из вариантов выполняет ровно один вариант: Случайно, По очереди или По весам. Вариант с весом 0 не выпадает никогда
Шаг действий обычный список действий внутри сценария

Порядок выполнения у веток и исходов — По очереди или Одновременно, если безопасно. Одновременно бот выполняет только ответы, задержки и счётчики. Если внутри есть что-то ещё, например модерация, всё пойдёт по очереди.

У ветки и исхода есть Копия — она копирует условия и шаги целиком. Когда в сценарии снова останется один шаг действий, он опять станет простым списком.

Кого выбрать целью действия

Цель Что значит
Тот, кто вызвал автор сообщения, команды или события
Случайный зритель случайный человек из чата
Логин из аргумента ник после команды или в тексте награды
Логин из аргумента (иначе автор) если ник указан — он, если нет — автор
Заданный ник конкретный логин, прописанный в правиле
Предыдущий подходящий зритель человек, который писал перед срабатыванием
Следующий подходящий зритель человек, который напишет после срабатывания
Цель последнего таймаута последний пользователь, которого правило отправило в таймаут

Для случайных и соседних целей проверьте исключения: стример, модераторы, старшие модераторы, боты и сам PulseCaster не должны случайно попадать под наказание.

Тексты ответов и переменные

Под каждым текстом есть кнопка Вставить переменную: палитра с поиском показывает только то, что имеет смысл в этом месте. Донатных переменных нет у команды, {roll} — только внутри исхода кубика, остаток кулдауна — только в ответе на кулдауне. Переменная встаёт туда, где стоит курсор, а выделенный текст заменяется.

Под полем конструктор подсказывает, если такой переменной нет — например, {usr} вместо {user}, — если в имени аргумента кириллица или если переменная в этом месте не работает. Это подсказки, а не ошибки: правило сохранится, а такая переменная уйдёт в чат как есть или подставится пустой.

Переменная Что подставит
{user} имя автора
{username} логин автора
{target} выбранную цель
{target_login} логин выбранной цели
{roll} что выпало на кубике — внутри исхода
{channel} название канала
{category} текущую категорию стрима
{uptime} минуты с начала стрима
{counter:!еда} значение счётчика
{counter.timer:!еда} сколько прошло с последнего сброса таймера счётчика: 3 дня, 4 часа
{counter.previous:!еда} сколько длился прошлый отрезок, до последнего сброса таймера
{counter.since:!еда} с какой даты ведём счёт: 29.10.2022
{counter.delta:!еда} на сколько счётчик изменился в этом срабатывании: 3
{counter.top:вес:*} топ-3 по личным счётчикам вес:{login}: 1. nika — 70, 2. pulse — 60, 3. viewer — 12; {counter.top:вес:*:5} — первые пять, не больше 10
{counter.sum:вес:*} сумма личных счётчиков всех зрителей — общий итог канала
{counter.count:вес:*} сколько зрителей уже завели такой счётчик
{cooldown_remaining} сколько секунд осталось до повторного использования
{cooldown_remaining_human} то же самое словами: 1 мин 20 с
{rand.int(0,100)} случайное число
{event:reward_input} текст из покупки награды
{event:donation_donor_name} имя донатера
{event:donation_amount} сумму доната
{event:donation_currency} валюту доната
{event:donation_message} сообщение донатера
{event:donation_provider} донат-платформу
{arg:1} первый аргумент команды или награды

То, что пишет не автор правила, бот вставляет как есть: аргументы команды, текст сообщения, на которое ответили, имена и сообщение доната. Если зритель напишет !скажи {counter:!еда}, в чат уйдёт именно {counter:!еда}, а не значение счётчика.

При сохранении бот проверяет функции в тексте: {format(…)} с неверным числом значений или {rand.int(…)} без двух чисел не подставятся, поэтому правило не сохранится, пока их не исправить.

Ограничения

Раздел свёрнут и показывает сводку: не чаще раза в 30 сек · 5 раз за стрим. Настроить раскрывает его.

Как часто:

Поле Что значит
Пауза после срабатывания кулдаун правила: оно молчит для всех, пока идёт пауза
Пауза для одного зрителя кулдаун зрителя: тот же зритель снова вызовет правило через столько секунд
Не больше, раз лимит срабатываний за стрим, день или всё время — на всех вместе или каждому зрителю
Когда просят раньше времени что ответить на команду во время паузы — см. ниже
Наказаний в минуту, не больше предохранитель: если правило начнёт наказывать слишком многих подряд, лишние таймауты и баны пропустятся

У событий — всех триггеров, кроме сообщения в чате, команды и награды, — только общая пауза и общий лимит: без пауз и групп для отдельных зрителей и без ответа «раньше времени».

Когда просят раньше времени

Вариант Что происходит
Как в настройках канала работает антиспам команд: одно предупреждение, дальше тишина и, если включено, таймаут
Свой ответ ваш текст вместо стандартного предупреждения, один раз за паузу; дальше — антиспам канала
Таймаут таймаут с первой же попытки, с причиной
Промолчать бот полностью молчит и никого не наказывает

Как в настройках канала действует только на правила-команды. Правило на слово в чате, упёршееся в паузу, молчит. Таймаут за спам выдаётся только за личную паузу зрителя: если идёт общая пауза правила, которую запустил кто-то другой, бот лишь один раз предупредит.

Пока правило на паузе, оно отвечает только своим «раньше времени», а сообщение идёт дальше: его проверяют правила ниже, и встроенная команда, счётчик или своя команда с тем же именем отвечают как обычно. Так удобно делать запасную команду. Если отвечать не должен никто, кроме ответа «раньше времени», включите Остановить правила ниже и подпункт …и пока правило на паузе или исчерпало лимит.

Особые настройки для части зрителей — группы по ролям или логинам со своими паузами и лимитами. Например, VIP можно разрешить чаще, а новичкам — реже. Если зритель подходит под несколько групп, действует первая по списку; остальные — по настройкам «Как часто». Группа с ролями и логинами вместе ловит того, у кого есть и логин из списка, и одна из ролей. Группа без ролей и логинов действует на всех — конструктор предупредит.

Остальные правила

Остановить правила ниже — когда это правило сработало, правила ниже по списку это сообщение уже не проверяют, а встроенный ответ на эту команду — базовая команда, счётчик или своя команда с тем же именем — промолчит.

Примеры:

  • стоп-слово удалило сообщение и выдало таймаут — остальные правила лучше остановить;
  • команда !соцсети просто ответила ссылками — остальные правила можно не останавливать;
  • награда запустила кубик — обычно лучше остановить похожие правила по этой же награде.

Если условия правила не совпали, оно в обработке не участвует и ничего не останавливает. Чтобы ловить всё остальное, добавьте в сценарий + Иначе.

Остановка, пока правило на паузе

Подпункт …и пока правило на паузе или исчерпало лимит решает, что делать с сообщением, когда условия совпали, но правило ждёт паузу или исчерпало лимит.

Подпункт Что происходит
выключен (по умолчанию) сообщение идёт дальше: на паузе срабатывает ответ «раньше времени», затем сообщение проверяют правила ниже и отвечают встроенные команды и счётчики с тем же именем
включён сообщение считается обработанным: на паузе срабатывает только ответ «раньше времени», при исчерпанном лимите бот молчит; правила ниже не проверяются, встроенные команды не отвечают

Выключенный подпункт подходит для запасной команды, включённый — для команды, которой правило управляет целиком, например счётчика с таймером. Подпункт доступен только вместе с Остановить правила ниже.

Тестовый режим

Тестовый режим нужен, чтобы проверить новое строгое правило на живом чате. Правило проверяет сообщения на своём месте в списке, но только записывает в Журнал, что сделало бы. Для чата его как будто нет:

  • оно ничего не отправляет и никого не наказывает;
  • не останавливает правила ниже — ни настройкой Остановить правила ниже, ни действием Закончить правило;
  • встроенная команда, счётчик или своя команда с тем же именем отвечают как обычно, даже если в правиле есть наказание;
  • на паузе правило молчит: без ответа «раньше времени» и без таймаута, а сообщение идёт дальше.

Пауза и лимит у правила свои, поэтому в журнале столько срабатываний, сколько было бы у боевого. Лимит тест считает отдельно: боевой лимит он не тратит, и после выключения тестового режима счёт начинается с нуля.

В журнале у такого срабатывания метка Тестовый режим — только запись, сообщение, на котором правило сработало, и действия, которые бот выполнил бы. У наказания видно, кого, на сколько и за что правило наказало бы: Таймаут на 10 мин — viewer42: мат в чате. Случайного и подходящего зрителя правило выбирает только в бою — вместо ника тогда написано, как оно его выберет. Стримера бот не наказывает, поэтому такое наказание и в тестовом режиме помечено пропущенным.

Если в боевом режиме правило остановило бы правила ниже или встроенная команда промолчала бы, это написано отдельной строкой. Отправить тест в чат работает и у правила в тестовом режиме: это ручная проверка, ответы уйдут в чат.

Проверка правила

Раздел Проверка прогоняет правило на сервере так же, как в чате, но ничего не отправляет и не меняет: счётчики только показывают, какими станут.

  1. Впишите сообщение зрителя — у команды там уже стоит её имя.
  2. Отметьте, кто пишет, и минуту стрима.
  3. Нажмите Проверить.

Результат: сработает ли правило, какие условия выполнились, как прошёл сценарий — какая ветка подошла, что выпало на кубике, какой вариант выбран — и что сделает бот, с готовым текстом ответа. У наказаний — кого, на сколько и за что, как в тестовом режиме.

У событийных триггеров — таймер, рейд, подписка, донат и другие — сервер подставляет пример события, а кнопка Отправить тест в чат запускает правило как настоящее событие: бот отправит его ответы в чат канала с тестовыми данными. Модерация, счётчики, шёпот и паузы в тесте не выполняются.

Если сервер не принял правило при сохранении, ошибка появляется у нужной карточки — условия, действия, ветки — и списком над разделами.

Проверить сообщение

Вкладка Проверить сообщение отвечает на вопрос «почему бот промолчал?». Напишите сообщение, как его написал бы зритель, выберите роли и нажмите Проверить сообщение. Бот прогонит его по всем правилам канала сверху вниз:

  • кто ответит и каким текстом;
  • у какого правила не прошло условие и какое;
  • кто на паузе, исчерпал лимит или держит сообщение;
  • какое правило остановило остальные;
  • что сделало бы правило в тестовом режиме — у него своя метка, а его ответы в итог не попадают;
  • ответит ли после правил встроенная команда или счётчик.

Выключенные правила и правила других триггеров спрятаны под ссылкой. В чат ничего не уходит, паузы и счётчики не меняются.

Журнал

Вкладка Журнал показывает последние 100 срабатываний: время, зритель, сообщение, на котором сработало правило, что бот отправил, что пропустил и почему, что не выполнилось. Фильтр — по правилу и по результату, имя правила открывает его. Сюда попадают только выполненные правила: не подошедшие по условиям и отдыхающие на паузе покажет Проверить сообщение. Правило в тестовом режиме пишет сюда, что сделало бы, с меткой Тестовый режим — только запись.

Правила из прежнего конструктора

Правила, собранные в прежнем, «классическом» конструкторе, открываются в новом виде: конструктор переводит их в сценарий на сервере.

  • Обычно перевод точный. Правило работает так же, а сохранение Сохранить в новом виде переводит его насовсем.
  • Если правило в новом виде будет работать чуть иначе — например, из-за шанса внутри групп условий, — вверху появится предупреждение с объяснением. Сохранить получится только после отметки Понимаю, сохранять в новом виде.

Прежняя версия при переводе сохраняется в резерве, её можно вернуть через поддержку.

Практические примеры

Команда с ответом

Задача: зритель пишет !соцсети, бот отвечает ссылкой.

  1. Новое правило. Когда уже Команда — впишите соцсети.
  2. Сделать: раскройте Ответить в чат и впишите Наши ссылки: ….
  3. Создать правило, проверьте и включите.

Приветствие первого сообщения

  1. Когда: Первое сообщение зрителя за стрим.
  2. Если: + Исключение → Роль пользователя → модераторы, если им приветствие не нужно.
  3. Сделать: Ответить в чат с текстом {user}, привет! Рад видеть на стриме.

Реакция на награду

  1. Когда: Награда за баллы, отметьте награду.
  2. Если награда требует текст, добавьте условие У награды есть текст.
  3. Сделать: Ответить в чат. В ответе можно использовать {event:reward_input}.

Благодарность за донат

  1. Сначала подключите сервис в разделе Донат-платформы.
  2. В шаблонах выберите Благодарность за донат.
  3. Проверьте текст ответа, например:

    Спасибо, {user}, за {event:donation_amount} {event:donation_currency}! {event:donation_message}
    
  4. В Проверке нажмите Отправить тест в чат, затем сохраните и включите правило.

{user} в этом триггере — имя донатера. Тестовое или загруженное из истории событие не запускает правило.

Награда с кубиком

  1. Когда: Награда за баллы, отметьте награду.
  2. Сделать: + Кубик. Выберите d20.
  3. Разделите исходы: 1–5, 6–19, 20 — + Исход добавляет исход, Выпало переключает диапазон и точное значение.
  4. В каждом исходе задайте свои действия. {roll} в тексте подставит выпавшее число.
  5. Проверьте правило в Проверке и только потом включайте.

Счётчик с таймером «без…»

Задача: любой зритель пишет !жопа и видит

1 год, 2 месяца, 3 дня, 4 часа, 5 минут без посылания в жопу (послали уже 1020 раз с 29.10.2022)

а модератор, старший модератор, стример или доверенный зритель пишет !жопа сброс или !жопа reset — счётчик растёт на 1, таймер начинается заново, и бот отвечает

0 минут без посылания в жопу (послали уже 1021 раз с 29.10.2022) было 1 год, 2 месяца, 3 дня, 4 часа, 5 минут
  1. В шаблонах откройте категорию Счетчики и выберите Счётчик с таймером «без…». Правило откроется сценарием из двух веток.
  2. Замените !жопа на свою команду: в условиях Команда равна обеих веток, в ключе действия Увеличить счетчик и в текстах ответов.
  3. В ветке сброса условие Логин пользователя со значением ник_доверенного — место для доверенных зрителей: впишите их логины или удалите условие. Роли модератора, старшего модератора и стримера стоят рядом через ИЛИ.
  4. Поменяйте тексты. Время подставляется словами, пустые части вроде «0 месяцев» не пишутся, а слово после числа склоняется через {format({counter:!жопа}, "раз", "раза", "раз")}.
  5. Если счёт уже шёл в другом боте, откройте Счётчики OBS, создайте счётчик !жопа и поставьте значение, Считаем с и Последний сброс таймера.
  6. Сохраните правило.
Ветка Условия Действия
Сброс: модератор, стример или доверенный ник команда !жопа, первый аргумент сброс или reset, роль модератора, старшего модератора или стримера или логин из списка Увеличить счетчик !жопа на 1 с галочкой Сбросить таймер «без события», затем ответ в чат с {counter.previous:!жопа}
Показать счётчик команда !жопа ответ на сообщение с {counter.timer:!жопа}, {counter:!жопа} и {counter.since:!жопа}

Выполняется первая подходящая ветка, поэтому зритель без прав, который пишет !жопа сброс, просто увидит счётчик.

У правила включено Остановить правила ниже: команду целиком обрабатывает оно, и встроенный ответ счётчика !жопа не дублирует сообщение. Поправки !жопа +1 и !жопа -1 тоже попадают в ветку Показать счётчик — число правьте на странице счётчиков. Паузу добавлять можно: в пресете включён подпункт …и пока правило на паузе или исчерпало лимит, поэтому, пока правило ждёт, встроенный ответ счётчика не появится — сработает только ответ «раньше времени».

Первое обращение и условия по счётчику

Пример для !вес с личным счётчиком вес:{login}: ветка Если Счётчик создан — Ещё не создан отвечает «Привет, новичок!», а Умный счетчик ниже создаёт счётчик со стартовым значением, например 60. Ветка с Значение счётчика < 40 может, к примеру, ответить «Пора поесть». Условия читают значение до начала сценария, поэтому в одном срабатывании ветка «ещё не создан» видит именно прежнее состояние.

Счётчики можно сравнивать между собой: Значение счётчика вес:{login} > второй счётчик рекорд — «новый рекорд!», а Сбросить счётчик в той же ветке обнулит, например, счётчик попыток. Общий итог и топ по всем зрителям показывают {counter.sum:вес:*} и {counter.top:вес:*}: звёздочка стоит там, где в ключе был {login}.

Умный счётчик: вес зрителя

Задача: зритель пишет !вес, его личный счётчик меняется на случайное число, а бот отвечает

За время 2 дня, 3 часа твой вес изменился на 7! Твой новый вес 42 (отслеживаешь с 28.09.2026)
  1. Когда: Команда вес.
  2. Сделать: Умный счетчик, ключ вес:{login}, От -5, До 10. {login} в ключе даёт каждому зрителю свой счётчик. Включите Сбросить таймер «без события»: тогда при каждом взвешивании начинается новый отрезок.
  3. Ответить в чат:

    За время {counter.previous:вес:{login}} твой вес изменился на {counter.delta:вес:{login}}! Твой новый вес {counter:вес:{login}} (отслеживаешь с {counter.since:вес:{login}})
    

{counter.previous:…} — сколько прошло с прошлого взвешивания, {counter.delta:…} — на сколько изменился счётчик сейчас. Без Разрешить минус счётчик не опускается ниже нуля, и {counter.delta:…} показывает настоящее изменение: при весе 2 и выпавших -5 будет -2.

Фильтр стоп-слов

  1. Возьмите шаблон Стоп-слова → Таймаут или соберите вручную: Когда — Сообщение в чате.
  2. Если: впишите свои слова. Шаблон ищет их через Текст содержит — надёжнее заменить условие на Совпадение по слову со строгостью Нормально. Стример, модераторы, старшие модераторы и VIP уже стоят в Кроме случаев, когда.
  3. Пока проверяете, включите Тестовый режим в Ограничениях: в Журнале будет видно, на каких сообщениях и кого правило наказало бы, а чат его не заметит. Можно и заменить таймаут на Ответить в чат.
  4. Когда правило ловит только то, что нужно, выключите тестовый режим или верните Таймаут.

Чеклист перед включением

  • название понятно без открытия правила;
  • описание объясняет, зачем правило нужно;
  • Когда выбрано правильно, у команды есть имя;
  • условия не слишком широкие;
  • модераторы, стример и боты исключены из наказаний, если это нужно;
  • действие выбирает правильную цель;
  • под текстами нет подсказок про неизвестные переменные;
  • Проверка показывает ожидаемый результат;
  • правило стоит на нужном месте в списке;
  • правило включено только после проверки.

Если правило работает не так

Начните с вкладки Проверить сообщение: она покажет, какое правило ответит, какое условие не прошло и кто остановил остальных.

Симптом Что проверить
Правило не срабатывает включено ли правило, подходит ли Когда, не слишком ли строгие условия, не останавливает ли его правило выше
Срабатывает слишком часто добавьте условия, роль пользователя, конкретную команду или награду, паузу
Срабатывает не на того человека проверьте цель действия
Бот молчит проверьте права Twitch, роль PulseCasterBot и текст действия; загляните в Журнал
Срабатывает несколько правил подряд поменяйте порядок или включите Остановить правила ниже
Стоп-слово ловит лишнее ослабьте строгость или поднимите Порог уверенности, добавьте исключения
Награда не определяется отметьте награду заново и сохраните правило