Zum Inhalt

Pattern: Refund bei Fehler (Update Redemption Status)

Wenn ein Reward-Action fehlschlägt (z.B. "Skip Song" und nichts spielt gerade), willst du dem Viewer die Channel-Points zurückerstatten. Das macht Update Redemption Status mit Status Cancel.

Wichtige Voraussetzung: Der Reward muss in Streamer.bot angelegt sein, nicht im Twitch-Dashboard. Sonst funktioniert die Refund-API nicht. Details siehe setup.md.

Pfad: Twitch → Rewards → Update Redemption Status Doku: https://docs.streamer.bot/api/sub-actions/twitch/rewards/update-redemption-status

Felder

Feld Bedeutung
Reward ID Reward GUID. Default: %rewardId% (kommt vom Trigger)
Redemption ID Einzelne Redemption GUID. Default: %redemptionId%
Status Fulfilled (akzeptieren) / Cancel (refund + cancel)

Wenn du im Reward Redemption Trigger bist, sind %rewardId% und %redemptionId% automatisch gesetzt. Du musst die Felder also einfach so lassen.

Refund-Pattern

[Reward] Action mit Refund-Logic
├── 1. (Sub-Action die scheitern kann, z.B. Send to Spotify-API)
├── 2. If/Else: %actionSuccess% Equals false      ← Bedingung je nach Action
│   ├── Update Redemption Status (Status = Cancel)
│   ├── Send Message: "@%user% hat nicht geklappt, du bekommst die Points zurück"
│   └── Break
├── 3. Update Redemption Status (Status = Fulfilled)
└── 4. Send Message: "@%user% Done!"

Konkretes Beispiel: Skip Song mit Refund

Angenommen du hast eine Spotify-Integration die per Fetch URL den nächsten Song skipt. Wenn Spotify offline ist, schlägt das fehl.

[Reward] Skip Song
├── 1. Fetch URL (Spotify Skip API)
│      Setzt %fetchUrlStatusCode%
├── 2. If/Else: %fetchUrlStatusCode% Greater Than 299
│   ├── Update Redemption Status: Status = Cancel
│   ├── Send Message: "@%user% Spotify nicht erreichbar — Punkte zurück."
│   └── Break
├── 3. Update Redemption Status: Status = Fulfilled
└── 4. Send Message: "⏭️ @%user% hat den Song geskipt!"

Auto-Fulfill am Ende

Wenn Skip-Queue aktiv ist (Reward muss bestätigt werden), reichst du am Ende einer erfolgreichen Action Update Redemption Status: Fulfilled ein. Damit verschwindet der Reward aus der Queue.

Bei Skip Queue ✅ brauchst du das nicht — Twitch fulfilled automatisch.

Status-Optionen im Detail

Status Effekt
Fulfilled Reward gilt als erfüllt. Channel-Points bleiben abgezogen, kein Refund. Reward verschwindet aus Queue
Cancel Reward gilt als abgelehnt. Channel-Points werden zurückerstattet. Reward verschwindet aus Queue mit Cancelled-Status
Pending Reward bleibt in der Queue (selten gebraucht)

Edge-Case: Reward existiert nicht mehr

Wenn ein Reward zwischenzeitlich gelöscht wurde aber jemand noch einlöst (lag), schlägt Update Redemption Status fehl. Pragmatisch: kein zusätzliches Error-Handling nötig — User bekommt einfach keine Bestätigung.

Häufige Fallen

  • Reward nicht via SB angelegt — Update Redemption Status macht "Authentication error" oder ähnliches still. Lösung: Reward in SB neu anlegen
  • Vergessen Fulfilled zu setzen — Reward bleibt in Twitch-Queue. Bei Skip-Queue-aktivierten Rewards ist es egal
  • Race-Condition — wenn User schnell mehrere Rewards einlöst, kann %rewardId% verwechselt werden. Lösung: gleich am Action-Anfang via Set Argument die IDs in lokale Variablen kopieren
  • Channel-Points-Refund nicht sichtbar — Twitch zeigt's erst beim nächsten Page-Reload. User-seitig fühlt sich's verzögert an

Generische Vorlage

[Reward] <name>
├── 1. (Tatsächliche Aktion — z.B. Spotify-API, OBS-Source, ...)
├── 2. If/Else: <Erfolgs-Check>
│   ├── Update Redemption Status: Cancel
│   ├── Send Message: "@%user% hat nicht geklappt — refund."
│   └── Break
├── 3. Update Redemption Status: Fulfilled
└── 4. Send Message: "<Success-Message>"

Quellen