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. 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 |
|---|---|---|
%userName% | Login (lowercase) | azazelitv |
%user% | 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 etc. |
%commandType% | message, whisper etc. |
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/api/sub-actions/twitch/channel/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/api/sub-actions/core/logic/get-random-number
| Variable | Inhalt | Typ |
|---|---|---|
%randomNumber% | Integer in Range (inklusiv beide Enden) | int |
%randomFloat% | Float zwischen 0 und 1 | float |
%randomPercent% | Float * 100 | int |
Get User Info for Target
Abschnitt betitelt „Get User Info for Target“Doku: docs.streamer.bot/api/sub-actions/twitch/user/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 |
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.
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.
Alternativ: Set Argument Sub-Action mit $replace(%input0%, @, )$ → Variable targetLogin setzen → diese dann verwenden.
Fallback wenn Input leer
Abschnitt betitelt „Fallback wenn Input leer“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):
- If/Else prüfen:
%input0%Is Null or Empty - Then-Branch: Set Argument
targetLogin=%userName%(Sender) - Else-Branch: Set Argument
targetLogin=$replace(%input0%, @, )$ - Danach: Get User Info for Target mit User Login =
%targetLogin%
Globale Variablen (~name~)
Abschnitt betitelt „Globale Variablen (~name~)“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.
Wichtige Falle
Abschnitt betitelt „Wichtige Falle“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.