Практическое руководство по узлам состояния

Узлы состояния дают Social Stream Ninja память. Используйте их для пауз, переключателей, счётчиков, ограничений частоты, списков участников и розыгрышей, чтобы автоматизации работали предсказуемо.

01 · Краткое введение

У инструментов состояния есть объект, который хранит значение, и операции, которые читают или меняют его:

Узел состояния

  • Находится на рабочем поле.
  • Хранит значение (ON/OFF, число, отметки времени или пользователей).
  • Шлюз, счётчик и ограничитель частоты могут работать в обычной цепочке событий.
  • Память пользователей — общий узел, на который ссылаются другие узлы.

Действие состояния

  • Размещается дальше по цепочке.
  • Читает или меняет сохранённое значение: включить ON, добавить +1, запомнить, выбрать победителя, сбросить и т. д.
  • Может находиться в любом месте потока — просто выберите имя нужного узла.
Помните: Сначала добавьте узел состояния, задайте уникальное имя, затем выберите его в каждой соответствующей операции. Без базового узла действиям состояния нечего обновлять.

02 · Переключатель вкл./выкл. (шлюз)

Переключатель — логический пропускной узел. При ON сообщения проходят; при OFF поток останавливается на этом узле.

Подходит для

  • Паузы между командами чата.
  • Ручное переключение: включение и отключение оверлеев.
  • Периоды обслуживания: приостанавливайте функции во время сцен BRB.

Основные действия

  • Set Gate State— переключить ON или OFF.
  • Reset State Node— вернуть значение по умолчанию, обычно ON.

Пример: пауза 15 секунд

!hello ──▶ Переключатель (ON?) ─▶ Отправить ответ ─▶ Состояние шлюза: OFF ─▶ Задержка 15 с ─▶ Состояние шлюза: ON

Шаги настройки

  1. Добавьте узел переключателя, назовите его «helloCooldown», начальное состояние — ON.
  2. Соедините триггер → переключатель → действия.
  3. После своего действия добавьте Задать состояние шлюза (OFF) со ссылкой на «helloCooldown».
  4. Добавьте Задержка узел (15 секунд).
  5. Добавьте ещё одно действие Задать состояние шлюза (ON) для «helloCooldown».

03 · Счётчик

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

Автоматическое увеличение: При каждом прохождении payload через узел счётчика он добавляет 1, если только вы не приостановили подсчёт опцией «Считать только при true на шлюзе».

Сценарии использования

  • Каждый N-й участник чата запускает выдачу приза.
  • Отслеживайте прогресс к общей цели сообщества.
  • Храните баллы, потраченные через команды.

Действия

  • Increment Counter— прибавить или вычесть произвольное значение.
  • Set Counter Value— установить конкретное число.
  • Reset State Node— вернуть начальное значение по умолчанию.

Пример: празднование каждые 5 сообщений

Любое сообщение ─▶ Счётчик (имя: hype5) ─▶ Условие (value % 5 === 0?) ─▶ Воспроизвести празднование

В узле условия сравните state.hype5.value или просто используйте встроенную опцию «Запускать при совпадении значения с целью» в свойствах счётчика.

04 · Ограничитель частоты (Throttle)

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

Когда это полезно

  • «Только пять заявок на розыгрыш в минуту».
  • «Один вызов API каждые 10 секунд».
  • «Отбрасывать оповещения, если оверлей уже занят».

Настройка

  • Задайте максимальное число разрешённых событий.
  • Выберите временное окно в секундах.
  • Выберите, ставить ли лишние события в очередь или отбрасывать их.
Обратите внимание: Ограничители не сбрасываются автоматически при редактировании потока. Используйте Reset State Node если при тестировании нужно начать с чистого состояния.

05 · Память пользователей

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

Подходит для

  • Допуск по подаркам или значкам.
  • Запоминание зрителей, которые поставили лайк, записались или участвовали.
  • Розыгрыши с уникальными участниками.
  • Отдельные списки для разных кампаний.

Операции

  • Remember User и Forget User.
  • User Is Remembered.
  • Pick Random User.
  • Clear All Users или Reset State Node.
Триггер участия ──▶ Запомнить пользователя ······▶ Память пользователей: участники Команда розыгрыша ─────▶ Выбрать случайного пользователя ···▶ Память пользователей: участники Команда сброса ─────────▶ Очистить всех пользователей ·····▶ Память пользователей: участники

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

См. отдельное Руководство по памяти о пользователях для проверенных снимков экрана, готового к загрузке потока розыгрыша, допуска участников TikTok, примеров участия и сведений о сбросе.

06 · Готовые решения

Выберите сценарий и выполните шаги.

Пауза между командами

  1. Узел переключателя с именем «commandCooldown».
  2. Триггер → переключатель → ответ.
  3. Состояние шлюза OFF → Задержка → Состояние шлюза ON.
  4. При желании добавьте сообщение «Пауза активна» на выход false.

Ограниченные бесплатные награды

  1. Начальное значение счётчика — 0, цель — 3.
  2. Увеличивайте после каждого обмена.
  3. Когда value ≥ 3, переходите в ветку «Извините, всё закончилось».
  4. Используйте действие сброса в конце трансляции.

Переключатель для зрителей

  1. Переключатель с именем «overlayToggle».
  2. !overlay on команда → Состояние шлюза ON.
  3. !overlay off команда → Состояние шлюза OFF.
  4. Все триггеры оверлея проходят через переключатель.

Примеры схем потоков

Триггер ─▶ Переключатель (overlayToggle) ─▶ Если ON → Показать оверлей └─false─▶ Сообщить модератору «Оверлей отключён»
Получить награду ─▶ Счётчик ticketsSold ├─value < 50 ─▶ Одобрить получение └─value ≥ 50 ─▶ Отказать + вернуть баллы

07 · Устранение неполадок и вопросы

Симптом Вероятная причина Решение
Действие «Задать состояние шлюза» не сохраняется. Подходящего узла переключателя нет либо имена различаются. Сначала добавьте узел переключателя и убедитесь, что он выбран в раскрывающемся списке.
Счётчик не увеличивается. Поток обходит узел счётчика либо значение шлюза равно false. Убедитесь, что связь от триггера проходит через счётчик, а выход шлюза равен true.
Ограничитель блокирует всё навсегда. Слишком строгое временное окно или остаточное состояние после тестов. Ослабьте ограничение и перед повторным тестом добавьте действие «Сбросить узел состояния».
У операции памяти пользователей нет пунктирной связи. Не выбрана целевая память. Выберите именованную память в свойствах операции или перетащите её фиолетовый боковой разъём на узел памяти.
Кнопки руководств не открываются. Работа внутри расширения без обновлённых ресурсов web_accessible. Убедитесь, что actions/state-nodes-guide.html поставляется через манифест, затем перезагрузите расширение.

Проверка при тестировании

  • Используйте инструмент Event Flow «Отправить тестовое событие» для имитации команд.
  • Во время проверки временно сокращайте паузы до 2 секунд или уменьшайте цели счётчиков.
  • Сбрасывайте узлы состояния между тестами, чтобы не считывать старые данные.
  • Подписывайте ветки, например «false → пауза активна», чтобы визуально отслеживать путь.

08 · Следующие шаги

Сочетайте узлы состояния с остальными инструментами Event Flow:

  • Используйте логические узлы AND/OR/NOT перед переключателем, чтобы определить, кто может им управлять.
  • Храните метаданные, связанные с состоянием, в meta чтобы оверлеи знали, почему сработала ветка.
  • Экспортируйте рабочие схемы как шаблоны, чтобы команда могла импортировать их позже.
Продолжайте экспериментировать! Новое Руководство по Event Flow дополняет это руководство и поможет освоить и логику, и состояние.