状态节点实用指南

状态节点为 Social Stream Ninja 提供记忆。使用它们构建冷却、开关、计数器、节流器、参与者列表和抽奖,让自动化行为可预测。

01 · 快速入门

状态工具包含一个拥有数值的对象,以及读取或更改该数值的操作:

状态节点

  • 位于画布上。
  • 保存值(ON/OFF、计数、时间戳或用户)。
  • Gate、Counter 和 Rate Limiter 可以在普通事件路径中运行。
  • User Memory 是其他节点引用的共享中心。

状态操作

  • 放在下游。
  • 读取或更改已存储值(设为 ON、加 1、记忆、抽奖、重置等)。
  • 可以位于流程中的任意位置,只需选择匹配的节点名称。
请记住: 先添加状态节点,为它起一个唯一名称,然后在每个匹配操作中选择它。没有基础节点,状态操作就没有可更新的对象。

02 · 开/关开关(门控)

开关是一个布尔守卫。ON 时消息通过;OFF 时流程在此节点停止。

适合

  • 聊天命令的冷却时间。
  • 手动切换(启用/禁用叠加层)。
  • 维护时间段(在 BRB 场景中暂停功能)。

关键操作

  • Set Gate State— 切换 ON 或 OFF。
  • Reset State Node— 恢复默认值(通常为 ON)。

示例:15 秒冷却

!hello ──▶ Switch (ON?) ─▶ Send Reply ─▶ Set Gate: OFF ─▶ Delay 15s ─▶ Set Gate: ON

构建步骤

  1. 放置开关节点,命名为“helloCooldown”,默认 ON。
  2. 连接触发器 → 开关 → 操作。
  3. 在您的操作之后,添加 设置门控状态(Set Gate State) (OFF),引用“helloCooldown”。
  4. 添加一个 延迟(Delay) 节点(15 秒)。
  5. 再添加一个 设置门控状态(Set Gate State) (ON),用于“helloCooldown”。

03 · 计数器

计数器跨消息跟踪数值。消息通过时会自动递增,也可以通过操作手动调整数值。

自动递增: 每次载荷通过 Counter 节点时都会加 1(除非使用“Only count when gate is true”选项将其暂停)。

使用场景

  • 每第 N 位聊天者触发一次奖品。
  • 跟踪社区目标进度。
  • 存储通过命令兑换的积分。

操作

  • Increment Counter— 加上或减去自定义数值。
  • Set Counter Value— 跳到指定数字。
  • Reset State Node— 恢复默认起始值。

示例:每 5 条消息庆祝一次

Any Message ─▶ Counter (name: hype5) ─▶ Condition (value % 5 === 0?) ─▶ Play Celebration

在 Condition 节点内,比较 state.hype5.value 或直接使用 Counter 节点属性中内置的“Trigger when value matches Target”选项。

04 · 速率限制器(节流)

节流器记住时间戳,并拒绝新事件,直到符合您指定的速率。

适用需求

  • “每分钟只允许五个抽奖条目。”
  • “每 10 秒调用一次 API。”
  • “如果叠加层已经忙碌,则丢弃提醒。”

配置

  • 设置允许的最大事件数。
  • 选择时间窗口(秒)。
  • 决定将超出限制的事件排队还是丢弃。
注意: 编辑流程时,节流器不会自动重置。使用 Reset State Node 如果测试期间需要清空状态。

05 · 用户记忆

User Memory 拥有一个包含不重复人员的命名列表。在用户参与时记住他们,在后续消息中检查该列表、移除某个人、随机选择获奖者,或仅清空该列表。

适合

  • 基于礼物或徽章的资格。
  • 记住点赞、报名或参与过的观众。
  • 每人一份资格的抽奖。
  • 为不同活动使用独立列表。

操作

  • Remember User 和 Forget User.
  • User Is Remembered.
  • Pick Random User.
  • Clear All Users 或 Reset State Node.
Participation Trigger ──▶ Remember User ······▶ User Memory: Entrants Draw Command ───────────▶ Pick Random User ···▶ User Memory: Entrants Reset Command ──────────▶ Clear All Users ·····▶ User Memory: Entrants

青绿色实线传递事件。紫色虚线表示某个操作使用哪项共享记忆。每个 User Memory 都有自己的计数、持久化模式和重置策略,因此清除一个列表不会影响另一个。

请参阅专门的 用户记忆指南 查看经核对的截图、可下载抽奖流程、TikTok 资格、参与示例和重置详情。

06 · 问题解决方案

选择一个场景并按步骤操作。

命令冷却

  1. 名为“commandCooldown”的开关节点。
  2. 触发器 → 开关 → 回复。
  3. Set Gate OFF → Delay → Set Gate ON。
  4. 如果需要,在 false 输出上添加聊天消息“Cooldown active”。

限量赠品

  1. 计数器默认值为 0,目标为 3。
  2. 每次兑换后递增。
  3. 当 value ≥ 3 时,分支到“Sorry, all gone”。
  4. 在直播结束时使用 Reset 操作。

观众开关

  1. 名为“overlayToggle”的开关。
  2. !overlay on 命令 → Set Gate ON。
  3. !overlay off 命令 → Set Gate OFF。
  4. 所有叠加层触发器都通过该开关。

示例流程图

Trigger ─▶ Switch (overlayToggle) ─▶ If ON → Show Overlay └─false─▶ Notify moderator “Overlay disabled”
Redeem Reward ─▶ Counter ticketsSold ├─value < 50 ─▶ Approve Redemption └─value ≥ 50 ─▶ Deny + Refund points

07 · 故障排查和常见问题

症状 可能原因 解决方法
Set Gate State 操作无法保存。 没有匹配的开关节点(或名称不同)。 先添加开关节点,并确认下拉菜单引用它。
计数器从不递增。 流程绕过计数器节点,或门控为 false。 确保触发器连线通过计数器,且门控输出为 true。
节流器一直阻止所有事件。 时间窗口过严,或测试遗留状态。 放宽限制,并在重新测试前放置一个 Reset State Node 操作。
User Memory 操作没有虚线链接。 未选择目标记忆。 在操作属性中选择命名记忆,或将紫色侧边连接器拖到记忆上。
指南按钮无法打开。 在扩展内运行,但未更新 web_accessible 资源。 确保 actions/state-nodes-guide.html 通过 manifest 提供,然后重新加载扩展。

测试检查表

  • 使用 Event Flow 的“Send Test Event”工具模拟命令。
  • 验证时暂时缩短冷却时间(2 秒)或降低计数器目标。
  • 在测试之间重置状态节点,避免读取过期数据。
  • 为分支添加标签(例如“false → cooldown active”),以便直观地跟踪路径。

08 · 后续步骤

将状态节点与 Event Flow 工具集的其他功能结合:

  • 在开关之前使用逻辑门(AND/OR/NOT),决定谁可以切换它。
  • 将由状态驱动的元数据存储在 meta 让叠加层知道分支为何触发。
  • 将有效模式导出为模板,方便团队稍后重新导入。
继续尝试!新的 Event Flow 指南 与本实用指南配合,帮助您掌握逻辑层和状态层。