Zum Inhalt springen

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 @bob z.B. an bob).

Persisted überlebt den SB-Restart. Non-Persisted lebt nur in Memory bis SB beendet wird.

Doku:

Core Globals Global (Set)
FeldBedeutung
Variable NameName der Variable. OHNE % oder ~. Beispiel: shrimpCount
ValueWert. Unterstützt %arg% und $func()$
ModeValue = überschreibt · Increment = addiert · Decrement = subtrahiert
Increment/Decrement AmountBei Inc/Dec der Wert (default 1)
DestinationGlobal · User (redeemer) · User (target)
PersistedPersisted (default) oder Non-Persisted
Core Globals Global (Get)
FeldBedeutung
Variable NameWelcher Global geholt werden soll. OHNE ~
Default ValueFalls Global noch nicht existiert, wird er mit diesem Wert angelegt
SourceGlobal · User (redeemer) · User (target)
PersistedGenau 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.

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.

Nach !clip die URL in einem Global speichern, damit !lastclip sie nochmal posten kann.

1. Create Clip
2. If/Else: %createClipSuccess% Equals true
3. Global (Set)
Variable Name: lastClipUrl
Value: %createClipUrl%
Mode: Value
Destination: Global
Persisted: Persisted
4. Send Message: "@%user% Clip: %createClipUrl%"

In der !lastclip-Action dann:

1. Global (Get)
Variable Name: lastClipUrl
Default Value: (leer)
Source: Global
Variable Name (Dest): lastUrl
2. If/Else: %lastUrl% Is Null or Empty
├─ Send Message: "Es gibt noch keinen Clip"
└─ Break
3. Send Message: "Letzter Clip: %lastUrl%"

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.

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 true
3. Global (Set)
Variable Name: hugCount
Mode: Increment
Destination: User (target)
Persisted: Persisted
4. Global (Get)
Variable Name: hugCount
Default Value: 1
Source: User (target)
Variable Name (Dest): hugs
5. Send Message: "@%user% gibt @%targetUser% eine Umarmung. Bisher %hugs% Umarmungen für %targetUser%."

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.

  • % 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 Persisted lassen.
  • Set ohne Get — Wert ist gespeichert, aber nicht als %arg% verfügbar. Get nachschalten oder Tilden-Interpolation nutzen.