Общее состояние Event Flow

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

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

Русский

Одна именованная память, много инструментов

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

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

Рабочее поле Event Flow: узлы «Запомнить пользователя» и «Пользователь запомнен» связаны с памятью «Участники розыгрыша» фиолетовым пунктиром
Реальный поток SSApp с двумя запомненными участниками. Путь событий остаётся бирюзовым, ссылки на общее состояние — пунктирные фиолетовые.

Настройка

  1. Перетащите Узлы состояния → Память пользователей на рабочее поле.
  2. Назовите узел по списку, который он хранит, например Допущены по Heart Me, Поставили лайк трансляции, или Участники розыгрыша.
  3. Выберите Текущий сеанс приложения или Сохранять между перезапусками.
  4. Добавьте необходимые проверки и действия, затем свяжите каждое с именованной памятью через боковой ромб или раскрывающийся список.
  5. Соедините обычный путь событий бирюзовыми связями и используйте Проверить сценарий с двумя разными именами пользователей перед эфиром.

Доступные операции

УзелЧто делает
Запомнить пользователяОднократно добавляет пользователя текущего события. Повторное участие увеличивает его счётчик участия, но не создаёт дубликатов в розыгрыше.
Пользователь запомненТриггер/проверка, возвращающая true, если текущее сообщение принадлежит человеку из выбранного списка памяти.
Забыть пользователяУдаляет только пользователя текущего события.
Выбрать случайного пользователяВыбирает одного уникального запомненного пользователя. При желании может удалить победителя, чтобы он не выиграл повторно.
Очистить всех пользователейОчищает только выбранный объект памяти пользователей.
Сбросить узел состоянияТакже очищает память пользователей, если она выбрана как цель сброса.
Свойства узла памяти пользователей: два текущих пользователя и сохранение между перезапусками
Узел показывает текущее число уникальных пользователей и хранит настройки сохранения/сброса.
Правило идентификации: пользователи определяются платформой и ID пользователя. Отображаемое имя используется только как запасной вариант. Анонимное или суммарное событие без личности пользователя безопасно игнорируется.

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

TikTok Heart Me или участник команды → ? Озвучивание текста

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

Событие подарка TikTok + совпадение «Heart Me» → AND → Запомнить пользователя ···→ [Допущены по Heart Me]
? команда + источник TikTok + (Участник команды TikTok OR Пользователь запомнен) → AND → Озвучить текст ? команда + NOT источник TikTok → AND ────────────────────────────────→ Озвучить текст
  • Для статуса команды/фаната TikTok выберите Роль пользователя → Участник команды TikTok. Узел напрямую читает входящие данные о значке/уровне TikTok; настройка отображения «считать участниками» в основном оверлее чата не требуется.
  • Payload подарков зависит от режима захвата. Распространённая схема — Тип события → Другое: gift а также Сообщение содержит: Heart Me. Проверьте захваченную запись в Test Flow/справочнике событий и выберите наиболее однозначное поле, которое предоставляет источник.
  • Обе ветки по-прежнему требуют начальную ?, чтобы сообщения с других платформ озвучивались для всех, а для TikTok сохранялось ограничение.

Запоминайте тех, кто поставил лайк или участвовал

Тип события → Другое: liked → Запомнить пользователя ···→ [Поставили лайк трансляции]

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

Розыгрыш с уникальными участниками

Сообщение начинается с !enter → Запомнить пользователя ···→ [Участники розыгрыша] Модератор + Сообщение начинается с !draw → AND → Выбрать случайного пользователя ···→ [Участники розыгрыша] Модератор + Сообщение начинается с !resetdraw → AND → Очистить всех пользователей ···→ [Участники розыгрыша]

Включить (Enable) Удалить выбранного пользователя если победители не должны выигрывать повторно. В публичной трансляции защитите команды розыгрыша/сброса проверкой модератора, администратора или точного имени пользователя.

Скачать пример потока участия и розыгрыша

Сброс и сохранение

Вручную

Используйте Очистить всех пользователей сейчас в свойствах памяти во время создания и тестирования.

Из потока

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

Автоматическая

Очищать после бездействия, при начале или завершении трансляции. Значение 0 отключает сброс по бездействию.

Между перезапусками

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

Свойства сброса памяти пользователей: бездействие, начало и конец трансляции, очистка всех пользователей сейчас
Каждая опция сброса относится только к этой именованной памяти. Другие узлы памяти пользователей не затрагиваются.
«Очистить всех» имеет ограниченную область действия: это означает всех пользователей в выбранной памяти, а не всё состояние Event Flow, все розыгрыши или все узлы памяти Social Stream Ninja.

Используйте результаты розыгрыша и участия

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

ПолеЗначение
userMemoryNameИмя выбранного узла памяти.
userMemoryCountЧисло уникальных пользователей, сохранённых сейчас.
userMemoryAddedTrue только когда «Запомнить пользователя» добавило нового уникального человека.
userMemoryEntryCountСколько раз этот человек участвовал.
selectedUserОтображаемое имя выбранного пользователя.
selectedUserId, selectedUserSourceПостоянный ID и платформа выбранного пользователя.
selectedUserParticipationCountЗаписанное число участий победителя.
selectedUserReasonПоследний шаблон причины, сохранённый действием «Запомнить пользователя».
selectedUserRemovedУдалил ли розыгрыш выбранного победителя.
Результат Test Flow: выбранный победитель и один оставшийся участник
Реальный результат Test Flow: выбрана Alice, а число пользователей в памяти уменьшилось до одного, потому что была включена опция «Удалить выбранного».

Устранение неполадок

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