Zum Inhalt springen

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 (siehe Globals Pattern). Inline Functions für String- und Mathe-Tricks.

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

VariableInhaltBeispiel-Wert
Argument %userName% Login des Senders, kleingeschrieben. Beispiel: azazelitv Variablen-Doku Login (lowercase)azazelitv
Argument %user% Display Name — kann Caps + Akzente enthalten. Beispiel: AzazeliTV Variablen-Doku 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 · …
%commandType%message · whisper · …

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

Doku: docs.streamer.bot — Create Clip

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

Doku: docs.streamer.bot — Get Random Number

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

Details: Get Random Number Pattern.

Doku: docs.streamer.bot — 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

Details: Get User Info Pattern.

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 einen Slot.

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. Oder via Set Argument:

  1. Set Argument mit $replace(%input0%, @, )$ → Variable targetLogin
  2. targetLogin dann überall verwenden

Wenn der User !iq ohne Target tippt, ist %input0% leer und Get User Info for Target schlägt fehl. Siehe Set Argument Fallback Pattern für das saubere Pattern.

Globals leben außerhalb der Action und überleben Restarts (wenn Persisted = true). Gesetzt mit Global (Set), gelesen mit Global (Get).

Schreibweise im Text-Feld: ~lastClipUrl~.

Details: Globals Pattern.

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