Globals — Werte über Sessions hinweg halten
Globals sind Variablen die außerhalb einer Action leben. Drei Scopes:
- Global — gilt für die ganze Streamer.bot-Instanz (z.B.
lastClipUrl). - User (redeemer) — an den User gebunden der die Action ausgelöst hat (Sender).
- User (target) — an einen Target-User gebunden (für
!iq @bobz.B. anbob).
Persisted überlebt den SB-Restart. Non-Persisted lebt nur in Memory bis SB beendet wird.
Doku:
Global (Set)
Abschnitt betitelt „Global (Set)“| Feld | Bedeutung |
|---|---|
| Variable Name | Name der Variable. OHNE % oder ~. Beispiel: shrimpCount |
| Value | Wert. Unterstützt %arg% und $func()$ |
| Mode | Value = überschreibt · Increment = addiert · Decrement = subtrahiert |
| Increment/Decrement Amount | Bei Inc/Dec der Wert (default 1) |
| Destination | Global · User (redeemer) · User (target) |
| Persisted | Persisted (default) oder Non-Persisted |
Global (Get)
Abschnitt betitelt „Global (Get)“| Feld | Bedeutung |
|---|---|
| Variable Name | Welcher Global geholt werden soll. OHNE ~ |
| Default Value | Falls Global noch nicht existiert, wird er mit diesem Wert angelegt |
| Source | Global · User (redeemer) · User (target) |
| Persisted | Genau wie beim Set genutzt |
| Variable Name (Destination) | Lokales Argument in das der Wert geschrieben wird |
Nach Get ist der Wert als %<Destination>% in den folgenden Sub-Actions nutzbar.
Beispiel: Per-User-Counter (!shrimp)
Abschnitt betitelt „Beispiel: Per-User-Counter (!shrimp)“Jedes Mal wenn User !shrimp tippt, zählt SB hoch und postet wie oft er es schon getan hat.
1. Global (Set) Variable Name: shrimpCount Mode: Increment Increment Amount: 1 Destination: User (redeemer) Persisted: Persisted
2. Global (Get) Variable Name: shrimpCount Default Value: 1 Source: User (redeemer) Persisted: Persisted Variable Name (Dest): myShrimpCount
3. Send Message to Channel Message: @%user% du hast %myShrimpCount% mal Shrimp gerufen.Beispiel: Letzten Clip merken (Global)
Abschnitt betitelt „Beispiel: Letzten Clip merken (Global)“Nach !clip die URL in einem Global speichern, damit !lastclip sie nochmal posten kann.
1. Create Clip2. If/Else: %createClipSuccess% Equals true3. Global (Set) Variable Name: lastClipUrl Value: %createClipUrl% Mode: Value Destination: Global Persisted: Persisted4. Send Message: "@%user% Clip: %createClipUrl%"In der !lastclip-Action dann:
1. Global (Get) Variable Name: lastClipUrl Default Value: (leer) Source: Global Variable Name (Dest): lastUrl2. If/Else: %lastUrl% Is Null or Empty ├─ Send Message: "Es gibt noch keinen Clip" └─ Break3. Send Message: "Letzter Clip: %lastUrl%"Variablen-Interpolation mit Tilden
Abschnitt betitelt „Variablen-Interpolation mit Tilden“Im Text-Feld einer Send Message kannst du Globals direkt mit Tilden interpolieren — ohne vorheriges Get:
Letzter Clip: ~lastClipUrl~Vorteil: kein Get-Schritt nötig. Nachteil: kein Default-Fallback, kein If/Else darauf möglich. Für reine Anzeige reicht Globale Variable %lastClipUrl% Tilden interpolieren Globals direkt im Message-Feld. Funktioniert nur in Text-Slots, nicht in If/Else-Inputs.
Variablen-Doku · für Logik immer Get.
Mode Increment auf User (target)
Abschnitt betitelt „Mode Increment auf User (target)“Mächtig: Counter pro Target-User in einer einzigen Sub-Action.
Use-Case: !hug @bob zählt wie oft Bob umarmt wurde.
1. Get User Info for Target (User Login = $replace(%input0%, @, )$)2. If/Else: %addTargetResult% Equals true3. Global (Set) Variable Name: hugCount Mode: Increment Destination: User (target) Persisted: Persisted4. Global (Get) Variable Name: hugCount Default Value: 1 Source: User (target) Variable Name (Dest): hugs5. Send Message: "@%user% gibt @%targetUser% eine Umarmung. Bisher %hugs% Umarmungen für %targetUser%."Non-Persisted Use-Case
Abschnitt betitelt „Non-Persisted Use-Case“Z.B. „Rate-Limit pro Stream-Session”. Nach Restart ist alles weg — perfekt für In-Memory-Zähler die nur eine Session leben sollen.
Häufige Fallen
Abschnitt betitelt „Häufige Fallen“%oder~im Variable-Name-Feld — Falsch. Nur den nackten Namen eintragen.- Destination = User (target) ohne Get User Info for Target davor —
%targetUser%-Kontext fehlt, Scope greift ins Leere. - Persisted-Flag vergessen — Counter nach Restart bei 0. Standard auf
Persistedlassen. - Set ohne Get — Wert ist gespeichert, aber nicht als
%arg%verfügbar. Get nachschalten oder Tilden-Interpolation nutzen.