Zum Inhalt springen
  • Dunkel
  • Hell
  • System

Discord Sub/Gift-Sub-Shoutout

Event: Sub/Gift → Discord

Fortgeschritten

Zwei Actions: einmal für Single-Subs, einmal für Gift-Subs. Gift-Bombs werden 10 s gepuffert und als eine Discord-Message gepostet statt 100×.

Steps
5
Cooldown
0s/User
Cooldown
0sglobal
Zugriff
Broadcaster

Zwei Actions hier:

  1. Sub-Single: jeder einzelne Sub kriegt einen Discord-Post mit Tier-Emoji
  2. Gift-Bomb-Buffered: bei 100 Gift-Subs in 5 Sekunden NICHT 100 Discord-Posts; stattdessen erste Sub starten Timer + Buffer, am Ende ein konsolidierter Post

Beide nutzen den gleichen Webhook, aber unterschiedliche Trigger.

Trigger: Twitch > Subscriptions > Subscription (Prime + T1 + T2 + T3 aktivieren).

Setzt Argument %user% Twitch-Login des Subbers. Variablen-Doku , Argument %subTier% String. 'Prime', '1000', '2000', '3000'. Variablen-Doku , Argument %months% Cumulative Months. Variablen-Doku , Argument %message% Sub-Message vom Subber (kann leer sein). Variablen-Doku .

Set Argument: Tier-Emoji

Core Arguments Set Argument

Mapping Tier → Emoji für die Discord-Message.

Name tierEmoji
Value 💎

If/Else: Tier-Cascade

Core Logic If/Else

Pro Tier eigenes Emoji setzen. Default ist 💎 für Prime.

Input %subTier%
Operation Equals
Value 2000
Then

Set Argument: Tier 2

Core Arguments Set Argument
Name tierEmoji
Value 🔥

If/Else: Tier 3

Core Logic If/Else
Input %subTier%
Operation Equals
Value 3000
Then

Set Argument: Tier 3

Core Arguments Set Argument
Name tierEmoji
Value 👑

Discord Basic Webhook

Integrations Discord Basic Webhook

Multi-Line Post mit Tier-Emoji, Username, Months.

Webhook Name Sub-Feed
Webhook URL https://discord.com/api/webhooks/...
Username AzaCraft Subs
Content %tierEmoji% **%user%** subbed. Month %months% > %message%
AzaCraft Subs: 🔥 Bob subbed. Month 14 · > yo das war hart
So sieht's im Chat aus
  1. 1 Set Argument: tierEmoji = 💎 (Prime-Default)
  2. 2 If/Else: %subTier% Equals "2000"
    1. Then 2a Set Argument: tierEmoji = 🔥
  3. 3 If/Else: %subTier% Equals "3000"
    1. Then 3a Set Argument: tierEmoji = 👑
  4. 4 Discord Basic Webhook: Tier-Emoji + Username + Months + Sub-Message

Trigger: Twitch > Subscriptions > Gift Subscription.

Setzt Argument %user% Twitch-Login des Gifters. Variablen-Doku , Argument %gifts% Anzahl der gerade gepushten Gifts. Variablen-Doku .

Pattern: bei einem Gift-Bomb-Event mit 100 Subs feuert SB den Trigger mehrfach (1× pro Sub oder 1× pro Bomb-Bundle: je nach Twitch-API-Lieferung). Statt jedes Mal direkt zu posten, sammelt der Buffer alle Gifts vom gleichen Gifter über 10 s und schickt EINE konsolidierte Discord-Message.

Global Add. Gift-Buffer aufaddieren

Core Globals Global (Set)

Per Gifter ein eigener Buffer-Key. Wert wird kumuliert.

Global Name discordGiftBuffer_%user%
Value %gifts%
Persisted aus

If/Else: Schon ein Timer aktiv?

Core Logic If/Else

Wenn ja, einfach raus: der Timer postet später alles.

Input %discordGiftTimerActive_user%
Operation Equals
Value true
Then

Break

Core Logic Break

Erster Gift hat den Timer schon gestartet: nichts mehr zu tun.

Global Set. Timer-Flag

Core Globals Global (Set)
Global Name discordGiftTimerActive_%user%
Value true
Persisted aus

Delay. Buffer-Fenster

Core Delay Delay

10 Sekunden warten, damit alle Gifts der gleichen Bomb reinkommen.

Duration 10000 ms

Global Get + Discord Post + Reset

Integrations Discord Basic Webhook

Holt den finalen Gift-Count, postet, resetted die Buffer-Keys.

Get Global discordGiftBuffer_%user% → totalGifts
Webhook Content 🎁 **%user%** hat **%totalGifts% Subs** gegiftet. Danke!
Set Global discordGiftBuffer_%user% = 0
Set Global discordGiftTimerActive_%user% = false
  1. 1 Global Add: discordGiftBuffer_%user% += %gifts%
  2. 2 If/Else: %discordGiftTimerActive_user% Equals "true"
    1. Then 2a Break (Timer läuft schon)
  3. 3 Global Set: discordGiftTimerActive_%user% = "true"
  4. 4 Delay 10000 ms (Buffer-Fenster)
  5. 5 Get %discordGiftBuffer_user% → %totalGifts% + Discord-Post + Buffer-Reset
EventDiscord-Post
Single T1 Sub💎 **Alice** subbed. Month 1
Single T2 Sub🔥 **Bob** subbed. Month 14 > yo das war hart
Single T3 Sub👑 **Carla** subbed. Month 36
5 Gift-Subs🎁 **Dave** hat **5 Subs** gegiftet. Danke! (nach 10 s gebufferter Post)
100 Gift-Subs🎁 **Eve** hat **100 Subs** gegiftet. Danke! (ein Post statt 100)

In der stream-offline Action zusätzlich:

Global Set: discordGiftBuffer_* = 0 (alle Buffer-Keys per Wildcard nicht möglich: manuell pro bekanntem User)

Pragmatischer: Buffer-Keys mit Persisted = aus setzen, dann sind sie nach SB-Neustart automatisch weg. Bei laufendem SB bleiben sie: aber sie zählen nicht falsch hoch, weil der Timer-Flag auch resetted wird.

  • Gift-Bomb dauert länger als 10 s: bei Twitch-API-Lag landen späte Gifts im NÄCHSTEN Buffer (neuer Timer). Resultat: 2 Posts statt 1. Annehmbar, aber Delay auf 15 s erhöhen wenn häufig
  • Anonymous Gifter: %user% ist dann AnAnonymousGifter. Discord-Post zeigt das, ist okay
  • Buffer-Key-Sammlung: bei vielen Streams sammeln sich discordGiftBuffer_alice, _bob, _carla etc. Persisted Globals: manuell aufräumen oder Persisted = aus
  • Sub-Message mit Markdown: User schreibt **bold** in der Sub-Message, Discord rendert das. Wer Plain-Text will: in der Action vorher per $replace(%message%,**,)$ strippen
  • Sub-Message ist leer: Plain-Text-Quote > bleibt. Pre-Check mit If/Else auf empty + Quote weglassen
  • Tier-Cascade in einer If/Else-Cascade: wer Else-Branches sauberer nutzen will, kann Sub-Action 2 + 3 zu einer geschachtelten If/Else-Struktur mit Else-Branch machen statt 2 separate Ifs
  • Sub-Counter pro Stream im Discord: am Stream-Ende einen Stats-Post mit Sub-Count aus stream-offline
  • Gift-Top-Liste: Persisted Global topGifters mit JSON-Array, am Stream-Ende Top-3 ins Discord
  • Voice-Channel-Move: bei T3-Sub: Discord-Bot moved den User in einen VIP-Voice-Channel (via Bot, nicht Webhook)
  • Webhook-Edit nach Stream: Discord-Message-ID aus Sub-Action 5 speichern, am Stream-Ende per C#-Execute-Code PATCH-Request für „Stream beendet: Recap“