Zum Inhalt

Reward: Skip Song (mit Refund bei Fehler)

Viewer löst Reward ein → der aktuell spielende Song wird übersprungen. Wenn nichts spielt oder die API nicht erreichbar ist, kriegt der Viewer die Channel-Points zurück.

Voraussetzung: - Reward in Streamer.bot angelegt - Spotify (oder ähnliche Music-API) erreichbar via Fetch URL ODER ein eigenes Bot-Setup - Reward-Action MUSS in SB angelegt sein damit Refund funktioniert

Patterns: Reward Trigger + Fetch URL + If/Else + Update Redemption Status (Refund) Sub-Actions: 5-8

Reward in Streamer.bot anlegen

Feld Wert
Title Skip Song
Cost 1000
Prompt Skipt den aktuell laufenden Song
Skip Request Queue false (wir fulfillen selbst)
Max Per User Per Stream 2
Global Cooldown 30

Action: [Reward] Skip Song

Trigger

Twitch → Channel Reward → Reward Redemption → Reward Skip Song.

Sub-Action 1: Fetch URL — Spotify Skip API

Wichtig: Fetch URL kann nur GET

Spotify's Skip-Endpoint braucht POST. Streamer.bot's Fetch URL Sub-Action unterstützt aber nur GET (siehe Fetch URL Setup). Für diesen Reward gibts zwei Wege:

  1. Streamer.bot Spotify Plugin nutzen (Community-Plugin) — bietet Spotify → Skip Sub-Action direkt
  2. C# Code-Block mit HttpClient für POST (außerhalb Scope dieses Cookbooks — wir vermeiden C#)
  3. Lokales AIMP/VLC mit GET-basierten HTTP-APIs (siehe Variante unten)

Die Anleitung unten zeigt das KONZEPT — die genaue Sub-Action hängt vom gewählten Setup ab.

Pfad: Core → Network → Fetch URL (für GET-basierte Music-Player) ODER Spotify → Skip (mit Plugin)

Feld Wert (bei GET-API z.B. AIMP)
URL http://localhost:8082/Player/Next (AIMP)
Variable Name skipResult
Parse result as JSON je nach API

Setzt nach Ausführung:

Variable Inhalt
%fetchUrlStatusCode% HTTP Status (z.B. 200, 204, 401, 404)
%fetchUrlContent% Response Body

Spotify Skip-API gibt 204 No Content bei Erfolg, 404 wenn nichts spielt, 401 bei abgelaufenem Token.

Sub-Action 2: If/Else — kein Song aktiv (404)

Feld Wert
Input %fetchUrlStatusCode%
Operation Equals
Value 404

Then-Branch:

Sub-Action 3 (im Then von 2): Refund + Message + Break

3a. Update Redemption Status: Cancel
3b. Send Message: "@%user% es spielt grad nix — du bekommst die Punkte zurück."
3c. Break

Sub-Action 4: If/Else — andere Fehler (401, 500)

Feld Wert
Input %fetchUrlStatusCode%
Operation Greater Than
Value 299

Then-Branch:

Sub-Action 5 (im Then von 4): Refund + Message + Break

5a. Update Redemption Status: Cancel
5b. Send Message: "@%user% Spotify-Fehler %fetchUrlStatusCode% — Punkte zurück."
5c. Break

Sub-Action 6: Update Redemption Status — Fulfilled

Update Redemption Status: Fulfilled

Sub-Action 7: Send Message — Erfolg

Feld Wert
Message ⏭️ @%user% hat den Song geskipt!
Send using bot account aktiv

Action-Tree

[Reward] Skip Song  (Trigger: Reward Redemption "Skip Song")
├── 1. Fetch URL: POST https://api.spotify.com/v1/me/player/next
├── 2. If/Else: %fetchUrlStatusCode% Equals 404
│   ├── 3a. Update Redemption Status: Cancel
│   ├── 3b. Send Message: "@%user% es spielt grad nix..."
│   └── 3c. Break
├── 4. If/Else: %fetchUrlStatusCode% Greater Than 299
│   ├── 5a. Update Redemption Status: Cancel
│   ├── 5b. Send Message: "@%user% Spotify-Fehler %fetchUrlStatusCode%..."
│   └── 5c. Break
├── 6. Update Redemption Status: Fulfilled
└── 7. Send Message: "⏭️ @%user% hat den Song geskipt!"

Spotify-Token Setup

Spotify-API braucht OAuth2 mit Refresh-Token. Drei Wege:

Methode Aufwand Stabilität
Eigenes Spotify-Dev-Account Mittel Hoch (du verwaltest selbst)
Third-Party-Service (Streamer.bot Spotify Plugin/Extension) Niedrig Mittel (von Service abhängig)
Pulsoid/SpotifyToken Webservices Niedrig Mittel

Für AzaCraft pragmatisch: Spotify Dev-App anlegen, OAuth-Flow einmal durchspielen, Refresh-Token im SB-Argument oder Global speichern. Refresh-Logik via zweiter Fetch URL bei 401.

Details zu Spotify-OAuth nicht in dieser MD — siehe Spotify Developer Docs.

Variante: Skip mit eingebautem SB-Music-Plugin

Wenn du das Streamer.bot Spotify Integration Plugin nutzt (offizielles oder Community), gibt es eine dedizierte Sub-Action Spotify → Skip. Dann brauchst du kein Fetch URL — der Plugin macht's.

[Reward] Skip Song
├── 1. Spotify → Skip   (Plugin-Sub-Action)
├── 2. If/Else: %spotifySkipSuccess% Equals false
│   ├── Update Redemption Status: Cancel
│   ├── Send Message: "..."
│   └── Break
├── 3. Update Redemption Status: Fulfilled
└── 4. Send Message: "⏭️ Geskipt!"

Alternative ohne Spotify: Custom-Skip-Logic

Wenn du eigene Musik-Setup hast (z.B. AIMP, Foobar2000, lokales VLC):

  • AIMP hat HTTP-API: http://localhost:8082/Player/Next
  • VLC HTTP-Interface: http://localhost:8080/requests/status.xml?command=pl_next

Gleiches Pattern wie oben, nur andere URL.

Häufige Fallen

  • OAuth-Token abgelaufen — Spotify-Tokens haben 1h Gültigkeit. Refresh-Token-Logik braucht zweite Fetch URL davor
  • Race-Condition mit mehreren Skips schnell — User redeemt 3x → Spotify API rate-limited → 429 Errors. Cooldown-Setting im Reward ist Pflicht
  • Refund klappt nicht — Reward wurde im Twitch-Dashboard angelegt statt in SB. Neu anlegen
  • Fulfilled wird vergessen — Reward bleibt in Twitch-Queue. Bei Skip-Queue = false MUSS man Fulfilled setzen

Quellen