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 Argumentdie 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¶
- Update Redemption Status: https://docs.streamer.bot/api/sub-actions/twitch/rewards/update-redemption-status
- Reward Redemption Trigger: https://docs.streamer.bot/api/triggers/twitch/channel-reward/reward-redemption