Zum Inhalt springen
  • Dunkel
  • Hell
  • System

Reward: Skip Song mit Refund

Reward: Skip Song

Pro

Reward-Skip mit Refund-Pattern. Beispiel zeigt AIMP/VLC HTTP-API. Spotify-Setup siehe Tawmae.

Steps
7
Cooldown
0s/User
Cooldown
30sglobal
Zugriff
Public

Klassisches Refund-Reward: der Song wird via HTTP-Skip-Endpoint übersprungen, bei Fehler bekommt der Viewer die Points zurück. Dieses Tutorial nutzt die AIMP-HTTP-API als Beispiel, weil Streamer.bot’s Fetch URL Sub-Action nur GET unterstützt und AIMP genau das anbietet. Für Spotify mit OAuth-Flow gibt es entweder das Community-Spotify-Plugin oder die Tawmae Spotify-Integration.

Trigger setzt Argument %user% Display-Name des Redeemers. Variablen-Doku und Argument %redemptionId% Für Update Redemption Status nötig. Variablen-Doku . Nach Fetch URL steht in den Response-Body der Statuscode: 200/204 bei Erfolg, 4xx/5xx bei Fehler.

FeldWert
TitleSkip Song
Cost1000
PromptSkipt den aktuell laufenden Song
Skip Request Queueaktiv
Max Per User Per Stream2
Global Cooldown30

Trigger: Twitch > Channel Reward > Reward Redemption mit Reward-Filter Skip Song.

Fetch URL: Skip-Endpoint

Core Network Fetch URL

AIMP-HTTP-API. Bei VLC: http://localhost:8080/requests/status.xml?command=pl_next.

URL http://localhost:8082/Player/Next
Variable Name api
Parse result as JSON deaktiviert

If/Else: Kein Song aktiv

Core Logic If/Else

AIMP/Spotify geben 404, wenn nichts spielt.

Input %api%
Operation Equals
Value 404
Then

Update Redemption Status. Canceled

Twitch Rewards Update Redemption Status
Redemption ID %redemptionId%
Status Canceled
Then

Send Message: Kein Song

Twitch Chat Send Message to Channel
Message @%user% es spielt grad nichts, Points zurück.
Then

Break

Core Logic Break

If/Else: Sonstiger Fehler

Core Logic If/Else

401, 5xx etc.

Input %api%
Operation Is Null or Empty
Then

Update Redemption Status. Canceled

Twitch Rewards Update Redemption Status
Redemption ID %redemptionId%
Status Canceled
Then

Send Message: Player-Fehler

Twitch Chat Send Message to Channel
Message @%user% Player-Fehler %api%, Points zurück.
Then

Break

Core Logic Break

Send Message: Erfolg

Twitch Chat Send Message to Channel

Wird nur erreicht wenn Skip durchging.

Message ⏭️ @%user% hat den Song geskipt!
Send using bot account aktiv
AzaBot: ⏭️ @AzazeliTV hat den Song geskipt!
So sieht's im Chat aus
  1. 1 Fetch URL: GET http://localhost:8082/Player/Next
  2. 2 If/Else: %api% Equals 404
    1. Then 2a Update Redemption Status: Canceled
    2. Then 2b Send Message: "@%user% nichts spielt..."
    3. Then 2c Break
  3. 3 If/Else: %api% Is Null or Empty
    1. Then 3a Update Redemption Status: Canceled
    2. Then 3b Send Message: "@%user% Player-Fehler..."
    3. Then 3c Break
  4. 4 Send Message: "⏭️ @%user% hat den Song geskipt!"
PlayerSkip-URLAuth
AIMPhttp://localhost:8082/Player/Nextkeine (lokal)
VLChttp://localhost:8080/requests/status.xml?command=pl_nextHTTP-Basic
Foobar2000 + foo_httpcontrolhttp://localhost:8888/?cmd=Nextoptional
SpotifyOAuth + POST /v1/me/player/nextsiehe Tawmae

Bei Spotify direkt funktioniert das hier gezeigte Pattern nicht. Streamer.bot’s Fetch URL ist GET-only. Optionen:

  • Community-Plugin Streamer.bot Spotify Integration mit eigener Spotify > Skip Sub-Action
  • Tawmae Spotify-Integration als fertige Premium-Lösung
AktionPlayer-StatusResultat
Reward eingelöstAIMP spielt SongSkip + Chat-Notification
Reward eingelöstAIMP stopptRefund + „nichts spielt“
Reward eingelöstAIMP offlineRefund + Player-Fehler
  • OAuth-Token abgelaufen (nur Spotify): Spotify-Tokens halten 1 h. Refresh-Logik braucht zweite Fetch URL davor.
  • Race-Condition bei Mehrfach-Skip: Cooldown im Reward-Setting ist Pflicht. 30 s Global Cooldown ist konservativ.
  • AIMP nicht gestartet: Connection-Refused gibt %api% = 0. Weder der Equals 404-Check noch Is Null or Empty fängt das, da 0 ein nicht-leerer Wert ist. Lösung: zusätzliche If/Else %api% Equals 0 → Refund + Break.
  • Fulfilled vergessen: bei Skip Request Queue = aktiv übernimmt Twitch das. Bei inaktivem Setting MUSS am Ende Fulfilled gesetzt werden.
  • Last-Song-Info: zusätzliches Fetch URL auf /Player/Now für den geskipten Song-Titel im Chat-Output.
  • VIP-Pricing: Discounted Reward über zweite Reward-Definition, gleiche Action via Any-Filter und If/Else %rewardName%.
  • Skip-Counter: Persisted Global mitzählen, alle 10 Skips Hinweis ans Pub posten.