Zum Inhalt springen
  • Dunkel
  • Hell
  • System

Variablen-Referenz

Streamer.bot ersetzt in den meisten Textfeldern Platzhalter zur Laufzeit. Drei Sorten gibt es. Jede hat eigene Klammern.

SyntaxWasBeispiel
%name%Argument (lokale Variable in der laufenden Action)%userName%, %input0%, %createClipUrl%
~name~Persisted Global (Variable über Sessions)~lastClipUrl~
$func()$Inline Function (Berechnung zur Laufzeit)$lower(%input0%)$, $add(%counter%, 1)$

Reine %arg% reichen für 99% aller Commands. Globals nur wenn der Wert nach Restart bleiben soll. Inline Functions für String- und Mathe-Tricks.

Sobald ein Chat-Command matcht, sind diese Variablen in der Action verfügbar:

VariableInhaltBeispiel-Wert
%userName%Login (lowercase)azazelitv
%user%Display Name (mit Caps)AzazeliTV
%userId%Twitch User-ID12345678
%userType%Rollebroadcaster, moderator, vip, subscriber, leer
%isSubscribed%Booltrue/false
%isModerator%Booltrue/false
%isVip%Booltrue/false
VariableInhaltBei !cmd @bob hallo welt
%message%Komplette Chat-Nachricht!cmd @bob hallo welt
%rawInput%Alles nach dem Command-Trigger (bei Location=Start)@bob hallo welt
%input0%Erstes Wort nach Command@bob
%input1%Zweites Worthallo
%input2%Drittes Wortwelt
%inputEscaped0%Wort mit escaped Quotes@bob
%inputUrlEncoded0%URL-encoded%40bob
VariableInhalt
%counter%Wie oft Command insgesamt aufgerufen wurde
%userCounter%Wie oft der Sender den Command aufgerufen hat
VariableInhalt
%command%Der konkrete Alias der gematcht hat (!clip)
%commandId%GUID des Commands
%commandSource%twitch, youtube etc.
%commandType%message, whisper etc.

Bestimmte Sub-Actions setzen NACH ihrer Ausführung neue Argumente, die du in den nachfolgenden Sub-Actions nutzen kannst.

Doku: docs.streamer.bot/api/sub-actions/twitch/channel/create-clip

VariableInhaltTyp
%createClipSuccess%War das Erstellen erfolgreich?bool
%createClipUrl%URL zum Clipstring
%createClipId%Clip-IDstring
%createClipCreatedAt%Zeitstempel der Erstellungstring

Doku: docs.streamer.bot/api/sub-actions/core/logic/get-random-number

VariableInhaltTyp
%randomNumber%Integer in Range (inklusiv beide Enden)int
%randomFloat%Float zwischen 0 und 1float
%randomPercent%Float * 100int

Doku: docs.streamer.bot/api/sub-actions/twitch/user/get-user-info-for-target

VariableInhalt
%targetUser%Display Name
%targetUserName%Login (lowercase)
%targetUserId%User-ID
%targetUserType%”affiliate” / “partner” / leer
%targetIsAffiliate%bool
%targetIsPartner%bool
%targetIsModerator%bool
%targetIsVip%bool
%targetIsSubscribed%bool
%targetSubscriptionTier%1000, 2000, 3000
%targetChannelTitle%Stream-Titel
%targetDescription%Channel-Beschreibung
%game%Aktuelles Game
%gameId%Game-ID
%accountAge%Account-Alter in Sekunden
%createdAt%Account-Erstelldatum
%addTargetResult%Bool ob Lookup erfolgreich war

Sub-Action: Twitch → Followers → Get Follow Age Info for Target. Setzt u.a. %followDate%, %followAgeDays%.

Sub-Action: Twitch → User → Add Random Users. Setzt %randomUser0%, %randomUserName0%, %randomUserId0% etc. pro angefordertem User.

Format: $funcName(arg1, arg2)$. Werden vor Variablen-Interpolation aufgelöst.

FunktionWas sie tutBeispiel
$lower(text)$Klein$lower(%user%)$azazelitv
$upper(text)$GROSS$upper(%user%)$AZAZELITV
$proper(text)$Erster Buchstabe groß$proper(%input0%)$
$length(text)$Zeichenanzahl$length(%input0%)$
$replace(text, search, replace)$Ersetzen$replace(%input0%, @, )$
$add(a, b)$Addition$add(%counter%, 1)$
$sub(a, b)$Subtraktion
$mul(a, b)$Multiplikation
$div(a, b)$Division
$mod(a, b)$Modulo
$random(min, max)$Zufallszahl inline$random(1, 100)$
$now()$Aktueller Zeitstempel
$date(format)$Formatiertes Datum$date(yyyy-MM-dd)$

Funktionen können verschachtelt werden: $upper($lower(%input0%))$.

User tippt !iq @Bob. %input0% enthält @Bob. Für Get User Info for Target brauchst du den Namen OHNE @.

Lösung: $replace(%input0%, @, )$ als Target-Input.

Alternativ: Set Argument Sub-Action mit $replace(%input0%, @, )$ → Variable targetLogin setzen → diese dann verwenden.

Wenn User !iq ohne Target tippt ist %input0% leer und Get User Info for Target schlägt fehl.

Lösung mit Set Argument (siehe patterns/07-set-argument-fallback.md):

  1. If/Else prüfen: %input0% Is Null or Empty
  2. Then-Branch: Set Argument targetLogin = %userName% (Sender)
  3. Else-Branch: Set Argument targetLogin = $replace(%input0%, @, )$
  4. Danach: Get User Info for Target mit User Login = %targetLogin%

Globals leben außerhalb der Action und überleben Restarts (wenn Persisted=true). Gesetzt mit Global (Set) Sub-Action, gelesen mit Global (Get) (die liest in ein lokales Argument).

Schreibweise im Text-Feld: ~lastClipUrl~. Vorsicht: in den Sub-Action-Feldern “Variable Name” gibst du NUR den Namen ohne Tilden ein. Tilden nur wenn du den Wert in einem TEXT-Feld interpolierst.

Beispiel im Send Message: Letzter Clip: ~lastClipUrl~.

Details: Globals Pattern.

Argumente sind case-sensitive. %userName% ist nicht das gleiche wie %username%. Wenn was nicht funktioniert → Schreibweise prüfen.

Im UI siehst du übrigens beim Sub-Action-Edit-Dialog meistens einen { } Button neben Textfeldern. Der öffnet einen Picker mit allen aktuell bekannten Argumenten. Saubererer Weg als Tippen.