Variable bleibt leer
Symptom
Abschnitt betitelt „Symptom“Du erwartest dass der Bot postet:
Aber im Chat steht stattdessen:
Die Variable wurde nicht aufgelöst.
Schnell-Check (30 Sekunden)
Abschnitt betitelt „Schnell-Check (30 Sekunden)“Sub-Action öffnen → Message-Feld prüfen → muss exakt %user% sein, mit Prozentzeichen vor und nach dem Namen, keine Leerzeichen dazwischen. Tippfehler wie % user% oder %user % oder %User% werden nicht aufgelöst.
Die vier wahrscheinlichen Ursachen
Abschnitt betitelt „Die vier wahrscheinlichen Ursachen“1. Tippfehler in der Variable
Abschnitt betitelt „1. Tippfehler in der Variable“| Geschrieben | Richtig | Funktioniert? |
|---|---|---|
%user% | ✓ | Ja |
%User% | ✗ | Nein: case-sensitive |
% user% | ✗ | Nein: kein Whitespace |
%user % | ✗ | Nein |
%users% | ✗ | Nein: falscher Name |
{user} | ✗ | Nein: falsche Syntax (SE/Streamlabs nutzt das, SB nicht) |
$user$ | ✗ | Nein. Dollar ist nur für Functions |
Fix: Komplette Variable löschen, neu tippen. Im Variablen-Hover-Picker (Drei-Punkte-Button neben Eingabe-Feldern) gibt es die Liste aller verfügbaren Variablen.
2. Falscher Trigger-Typ
Abschnitt betitelt „2. Falscher Trigger-Typ“Der Command Triggered-Trigger setzt automatisch Argument %user% Der Display-Name des Chat-Users der den Command getriggert hat.
Variablen-Doku , Argument %message% Der komplette Chat-Text inkl. Command-Name.
Variablen-Doku und ihre Geschwister. Wenn deine Action aber per Chat → Message-Trigger feuert, existieren diese Variablen nicht.
Prüfen: Action → Tab Triggers → Trigger-Typ.
| Trigger | %user% verfügbar? | Stattdessen |
|---|---|---|
Twitch → Command → Command Triggered | Ja | — |
Twitch → Chat → Message | Nein | %message.user% oder %username% (Spec ändert sich pro Version) |
Twitch → Channel → Follow | Nein (%user% undefined) | %followUser% / %user% (Follow-Trigger setzt eigene Vars) |
Twitch → Channel → Reward Redemption | Nein | %userName% (Reward-Vars sind anders benannt) |
Fix: Wenn du Variablen aus einem Trigger nutzen willst, musst du den Trigger erst kennen. Im Action-Editor unter Test Trigger → Run → Logs-Pane zeigt unten alle aktuell gesetzten Variablen für den letzten Trigger. Das ist die zuverlässigste Quelle.
3. Variable wurde zwar gesetzt, aber später überschrieben oder gelöscht
Abschnitt betitelt „3. Variable wurde zwar gesetzt, aber später überschrieben oder gelöscht“Beispiel: Sub-Action 1 setzt %clipUrl% via Create Clip. Sub-Action 2 ist ein If/Else, das in den Else-Branch fällt, weil %createClipSuccess% false war. Dort wird %clipUrl% aber bereits referenziert – und ist leer, weil der Create-Clip-Call gefailt ist.
Prüfen: Sub-Action-Reihenfolge durchgehen. Welche Sub-Action setzt die Variable? Wird sie davor referenziert?
Fix: Variable in der richtigen Reihenfolge setzen. Bei Bedarf Core Arguments Set Argument
4. JSON-Parse vergessen (bei Fetch URL)
Abschnitt betitelt „4. JSON-Parse vergessen (bei Fetch URL)“Die Sub-Action Fetch URL lädt eine API-Response in %apiResponse%. Standardmäßig ist die Response der Raw-String – und Feld-Zugriffe wie %apiResponse.temperature% funktionieren nicht.
Fix: Sub-Action Fetch URL öffnen → Häkchen Parse JSON Response aktivieren. Danach sind die Felder als %apiResponse.feldname% zugänglich.
Mehr Details: Fetch-URL-Setup.
Variablen-Existenz live prüfen
Abschnitt betitelt „Variablen-Existenz live prüfen“Im Action-Editor:
- Button
Test Triggeroben rechts. - Im Dialog die Test-Werte für bekannte Variablen setzen (z.B.
user=TestUser). Run.- Im Logs-Pane (unten) den letzten Block aufklappen: dort steht eine Liste aller Variablen mit Werten.
Diese Liste ist die einzig wahre Quelle. Wenn dort clipUrl nicht steht, kannst du es nicht nutzen – egal, was die Doku sagt.
Variablen-Namespaces
Abschnitt betitelt „Variablen-Namespaces“Streamer.bot trennt:
| Namespace | Syntax | Beispiel | Persistenz |
|---|---|---|---|
| Argument (Trigger-Kontext) | %name% | %user%, %input0% | Per-Trigger, weg nach Action-Ende |
| Persisted Global | ~name~ | ~totalClips~ | Bleibt nach SB-Restart |
| Non-Persisted Global | ~name~ (ohne Persist-Flag) | ~uptime~ | Weg nach SB-Restart |
| Function | $function()$ | $random(1, 100)$ | Pro Call ausgewertet |
Wenn du eine Persisted-Variable referenzierst die noch nie gesetzt wurde, ist der Wert "" (leer). Setze sie initial via Core Globals Global (Set) Persisted.