狀態節點實用指南

狀態節點為 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 指南 與本實用指南搭配,協助您掌握邏輯層和狀態層。