Сценарии автоматизации

С чем сюда приходят

Встроен в strAImer: модуль ставится вместе с приложением, скачивать ничего не нужно. Он есть в списке Каталог модулей → Встроенные.

Что это за страница

Автоматизация → Сценарии связывает событие с цепочкой действий: зритель погасил награду — и OBS переключил сцену, проиграл звук, а бот написал строку в чат. Собственное описание страницы: «Настройка правил реакции на награды Twitch и таймеров».

Сценарий состоит из трёх вещей, и их полезно не путать:

Как собрать сценарий

1. Создайте его

Создать сценарий в шапке. Пустая страница пишет «Сценарии отсутствуют. Создайте первый сценарий выше». Заполните Название сценария и выберите Группу — Без группы это нормальный ответ, а [ Создать новую группу... ] заводит её на месте.

2. Добавьте триггер

Триггеры — список способов войти, и страница объясняет, почему их список, а не один: «Любой из них запускает одну и ту же цепочку шагов. Вместо копии сценария добавьте второй триггер». + Триггер открывает Добавить триггер, и Тип триггера предлагает четырнадцать:

ТриггерЧто спрашивает
Награда каналанаграду из -- Выберите награду --, сгруппированных по Twitch и Kick, у каждой видна цена. -- Ввести ID вручную -- принимает идентификатор
Кнопка пультаСлот кнопки пульта — одну из кнопок тайла Пульт: Кнопки на Панели управления
ДонатУсловие по сумме и какие сервисы учитывать
ПодпискаКакие подписки — Любая подписка, Только новые, Только продления
Раздача подписокМинимум подписок в раздаче
РейдМинимум зрителей в рейде
Битсы (чир)Минимум битсов
Новый фолловерничего
Стрим началсяничего
Стрим закончилсяничего
Таймер дошёл до нуляКакой таймер: один из ваших обратных отсчётов или Любой таймер
Голосовая фразаФразы, по одной в строке; Как сравнивать — Фраза сказана где-то внутри реплики, Реплика — это ровно фраза или Регулярное выражение
Сообщение в чатеКоманды и слова, по одному в строке; Как сравнивать — Команда: первое слово сообщения, Сообщение начинается с фразы, Слово где-то в сообщении; и Кто может запускать — Любой зритель, Подписчики и выше, Модераторы и вы, Только вы
Встроенная награда Twitchкакая покупка: любая, Выделить моё сообщение, Отправить сообщение в режиме «только для подписчиков», Гигантский смайл, Эффект сообщения

У трёх минимумов ноль означает «любой». Стрим начался и Стрим закончился говорят это сами: «Срабатывает один раз при смене состояния эфира. Настраивать нечего».

Таймер дошёл до нуля слушает обратные отсчёты из Виджеты → Таймеры, и подсказка под ним объясняет как: «Таймеры настраиваются в разделе Виджеты → Таймеры. Отсчёт, который идёт дальше в минус, срабатывает один раз, когда переходит через ноль». В списке только обратные отсчёты: прямой до нуля не доходит никогда. Выключенный таймер сценарий не запускает, а ноль, наступивший, пока приложение было закрыто, не запускает его и после запуска приложения.

Сообщение в чате работает сразу во всех подключённых чатах, и три способа сравнения различаются сильнее, чем кажется. Команда читает только первое слово, поэтому «!свет» поймает и «!свет красный»; восклицательный знак писать необязательно, но если написали, то слово «свет» посреди разговора уже не считается. Слово где-то в сообщении означает слово целиком: «привет» не совпадёт с «приветствием». Ответы вашего же бота сценарий не запускают, поэтому цепочка, которая пишет в чат, не может кормить сама себя.

Триггер Голосовая фраза сверяет само приложение, а не ИИ: имя бота перед фразой не нужно, и кредитов он не тратит. Он слышит всё, что слышит распознавание речи (Голос → Распознавание). Если в Когда слушать выбрано Всё время, сценарий запустит и фраза, прозвучавшая в обычном разговоре, поэтому берите слова, которые случайно не скажешь, или Реплика — это ровно фраза. В режиме По удержанию клавиши микрофон слушает, только пока клавиша зажата, и сказанное в это время уходит ещё и ассистенту, а это уже платная часть. В режиме Всё время ассистенту тоже уходит фраза, начатая с имени из Как вы называете бота, а если имя не задано, то каждая фраза; оба режима разобраны в руководстве «Распознавание речи».

Готово кладёт триггер в список, где сохранённый можно открыть заново или убрать.

В том же окне живут две заставы, и обе по умолчанию выключены. Не чаще одного раза в, секунд — пауза между запусками: «Ноль — без ограничения: сценарий запускает каждое событие. Фолло-бот-рейд шлёт сотни фолловов в минуту, и без паузы каждый пишет в чат, говорит вслух и режет клип.» Вторая половина называется Один раз на зрителя, и рядом с ней список: в час значит, что тот же человек не запустит сценарий повторно в течение часа, за эфир значит один раз до начала следующего эфира. Старые сценарии остаются на в час. Память «за эфир» начинается заново, когда Статус стрима сообщает о новом эфире, и при перезапуске приложения.

Пауза показывается у тех входов, которые может толкать толпа: новый фолловер, подписка, подаренные подписки, рейд, битсы, встроенная покупка Twitch и сообщение в чате. Один раз на зрителя есть только у триггеров Новый фолловер и Сообщение в чате: то и другое бесплатно и легко повторяется, а повторная подписка или повторные битсы означают вторую оплату, и их не глушат. У награды, кнопки пульта, границ эфира, таймера на нуле и голосовой фразы нет ни той, ни другой заставы: шторма там ждать неоткуда. У нового триггера Сообщение в чате в паузе сразу стоит пять секунд, потому что команды в чате повторяют; сценарий, написанный до появления этих застав, ведёт себя ровно как прежде.

Пустой список наград пишет «Награды не найдены. Подключите Twitch или создайте награды в панели Twitch».

3. У доната два фильтра

Условие по сумме — это Любой донат, От этой суммы и выше, Ровно эта сумма или В диапазоне сумм, с полями Сумма и До под ним.

Учитывать донаты с площадок перечисляет ваши донат-коннекторы галочками: «Снятая галочка — площадка игнорируется этим сценарием. Новый донат-коннектор учитывается сразу после установки».

Суммы сравниваются в вашей базовой валюте (Настройки → Локализация), и донат, который не удалось сконвертировать, сценарий не запускает вовсе. Поэтому же Ровно эта сумма — ловушка для всего, что пришло в чужой валюте, и страница предупреждает об этом прямым текстом: «Точное совпадение работает только для донатов в вашей базовой валюте: после конвертации сумма оказывается дробной и практически никогда не совпадает».

4. Соберите цепочку

Шаги цепочки — это то, что произойдёт. Пустая, она пишет «Пока нет шагов. Добавьте действие или задержку».

Шаг Задержка заодно решает, что случится со вторым триггером, пока цепочка ещё ждёт. Цепочка, которая что-то включает и потом выключает, продлевается: дедлайн уезжает на длину задержки, а действия заново не выполняются — купили эффект дважды, получили вдвое больше времени, тогда как повторное переключение его бы погасило. Цепочка, которая говорит или пишет то, что принёс триггер — {message}, {user}, — вместо этого идёт своим прогоном на каждый триггер: три покупки за пять секунд это три отдельных прогона, и ничьё сообщение не пропадёт. Настраивать тут нечего: приложение решает по тому, что делают шаги.

Цепочка со звуком забирает звук приложения себе и держит до конца своего последнего звукового шага. Именно поэтому пауза перед речью хоть что-то значит. «Подождать 6 секунд, потом сказать голосом» держит звук всё время чтения, и три покупки подряд читаются по очереди с шестью секундами тишины между ними, а не отсчитывают свои паузы разом, чтобы потом прозвучать встык. Цепочка, у которой звук стоит в начале («проиграть звук, подождать 30 секунд, скрыть фильтр»), отпускает его сразу после звука: полминуты эффекта никого не задерживают. Цепочка без звукового шага не ждёт вовсе, поэтому смена сцены никогда не стоит в очереди за чужой речью.

Пауза отсчитывается, даже если приложению не удалось её записать. Обратный отсчёт запускается до сохранения приостановленной цепочки, поэтому медленная или неудавшаяся запись больше не съедает остаток цепочки. Теряется в этом случае только способность пережить перезапуск приложения: сама пауза всё равно доходит до конца, и цепочка продолжается.

OBS — требует подключения к OBS, и выпадающие списки заполняются из него же:

strAImer — всё, что приложение делает само:

Под полями Текст и Данные стоят кнопки {user}, {amount}, {reward}, {message} и {args}: «Нажмите на имя ниже, чтобы вставить его. Вместо имени подставится то, что запустило сценарий; незнакомое останется как есть». {args} принадлежит триггеру из чата — это текст после команды, поэтому «!заказ пицца» даёт «пицца». Кавычки и переводы строк в том, что написал зритель, экранируются по дороге в JSON, поэтому данные не ломаются.

5. Порядок и сохранение

Шаги выполняются сверху вниз. У каждой строки есть стрелки Вверх и Вниз, а ещё Редактировать и Удалить. Сохранить записывает сценарий.

После этого карточка в списке показывает по метке на каждый триггер, всю цепочку и число шагов. Рядом: переключатель «включён/выключен», Тестовый прогон, Создать копию (копия сразу открывается на правку, с « (копия)» в имени), Редактировать и Удалить, которое спрашивает «Удалить этот сценарий?».

Группы и передача переключателя в OBS

Группа — это папка, которая умеет быть ещё и выключателем. Создать группу в шапке заводит её; дайте Название группы, а сценарии попадают внутрь через поле Группа. Пустая группа пишет «В этой группе пока нет сценариев».

Автоматическое управление

Автоматическое управление заставляет группу следовать за Типом условия:

Первым трём нужны Выберите сцену OBS и Выберите источник OBS, и каждое поясняет себя под выбором — например, «Условие выполняется, пока выбранная сцена в эфире».

Чем управляет условие — список ниже: «Пока условие выполняется, всё перечисленное включено; перестало выполняться — выключено». Первая строка в нём заперта и стоит всегда: «Сценарии группы не срабатывают, пока условие не выполнено». + Добавить добавляет Награды за баллы Twitch — список ваших наград с галочками, — а Убрать убирает запись.

Почему часть наград серые

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

Чтобы автоматизировать такую награду, пересоздайте её управляемой на странице Автоматизация → Баллы канала; про неё есть инструкция «Баллы канала». Уже отмеченную галочку по-прежнему можно снять — старая настройка не застревает.

Три секунды ожидания

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

Это сделано намеренно. Источник, который никто на стриме не успел увидеть, — не повод открывать награды, а переключение группы означает по одной записи в Twitch на каждую награду в ней, поэтому мигающий источник раньше отправлял их десятками подряд.

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

Группа в списке

В шапке группы стоят галочка автоматически, переключатель группы, Настройки условий и Удалить; клик по самой шапке сворачивает группу. Удаление спрашивает и успокаивает: «Удалить группу "{name}"? Все сценарии внутри неё останутся целы и будут перенесены в раздел "Без группы"».

Чего здесь нельзя