Variablen-Referenz
Streamer.bot ersetzt in den meisten Textfeldern Platzhalter zur Laufzeit. Drei Sorten gibt es. Jede hat eigene Klammern.
Drei Klammer-Arten
Abschnitt betitelt „Drei Klammer-Arten“| Syntax | Was | Beispiel |
|---|---|---|
%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.
Auto-Argumente von Command Triggered
Abschnitt betitelt „Auto-Argumente von Command Triggered“Sobald ein Chat-Command matcht, sind diese Variablen in der Action verfügbar.
User-Info
Abschnitt betitelt „User-Info“| Variable | Inhalt | Beispiel-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-ID | 12345678 |
%userType% | Rolle | broadcaster · moderator · vip · subscriber · leer |
%isSubscribed% | Bool | true / false |
%isModerator% | Bool | true / false |
%isVip% | Bool | true / false |
Nachrichten-Input
Abschnitt betitelt „Nachrichten-Input“| Variable | Inhalt | Bei !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 Wort | hallo |
%input2% | Drittes Wort | welt |
%inputEscaped0% | Wort mit escaped Quotes | @bob |
%inputUrlEncoded0% | URL-encoded | %40bob |
Counter
Abschnitt betitelt „Counter“| Variable | Inhalt |
|---|---|
%counter% | Wie oft Command insgesamt aufgerufen wurde |
%userCounter% | Wie oft der Sender den Command aufgerufen hat |
Command-Meta
Abschnitt betitelt „Command-Meta“| Variable | Inhalt |
|---|---|
%command% | Der konkrete Alias der gematcht hat (!clip) |
%commandId% | GUID des Commands |
%commandSource% | twitch · youtube · … |
%commandType% | message · whisper · … |
Output-Variablen von Sub-Actions
Abschnitt betitelt „Output-Variablen von Sub-Actions“Bestimmte Sub-Actions setzen NACH ihrer Ausführung neue Argumente, die du in den nachfolgenden Sub-Actions nutzen kannst.
Create Clip
Abschnitt betitelt „Create Clip“Doku: docs.streamer.bot — Create Clip
| Variable | Inhalt | Typ |
|---|---|---|
%createClipSuccess% | War das Erstellen erfolgreich? | bool |
%createClipUrl% | URL zum Clip | string |
%createClipId% | Clip-ID | string |
%createClipCreatedAt% | Zeitstempel der Erstellung | string |
Get Random Number
Abschnitt betitelt „Get Random Number“Doku: docs.streamer.bot — Get Random Number
| Variable | Inhalt | Typ |
|---|---|---|
%randomNumber% | Integer in Range (inklusiv beide Enden) | int |
%randomFloat% | Float zwischen 0 und 1 | float |
%randomPercent% | randomFloat * 100 | int |
Details: Get Random Number Pattern.
Get User Info for Target
Abschnitt betitelt „Get User Info for Target“Doku: docs.streamer.bot — Get User Info for Target
| Variable | Inhalt |
|---|---|
%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.
Get Follow Age Info for Target
Abschnitt betitelt „Get Follow Age Info for Target“Sub-Action: Twitch → Followers → Get Follow Age Info for Target. Setzt u.a. %followDate%, %followAgeDays%.
Add Random Users
Abschnitt betitelt „Add Random Users“Sub-Action: Twitch → User → Add Random Users. Setzt %randomUser0%, %randomUserName0%, %randomUserId0% etc. — pro angefordertem User einen Slot.
Inline Functions
Abschnitt betitelt „Inline Functions“Format: $funcName(arg1, arg2)$. Werden vor Variablen-Interpolation aufgelöst.
| Funktion | Was sie tut | Beispiel |
|---|---|---|
$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%))$.
@-Zeichen vor Usernamen entfernen
Abschnitt betitelt „@-Zeichen vor Usernamen entfernen“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:
Set Argumentmit$replace(%input0%, @, )$→ VariabletargetLogintargetLogindann überall verwenden
Fallback wenn Input leer
Abschnitt betitelt „Fallback wenn Input leer“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.
Globale Variablen (~name~)
Abschnitt betitelt „Globale Variablen (~name~)“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.
Wichtige Falle: Case-Sensitivity
Abschnitt betitelt „Wichtige Falle: Case-Sensitivity“Argumente sind case-sensitive. %userName% ist nicht das gleiche wie %username%. Wenn etwas nicht funktioniert → Schreibweise prüfen.