Stream-Live-Notification mit @everyone¶
Bei Stream-Start automatisch eine "Wir sind live"-Nachricht in Discord posten — mit @everyone-Ping, Game-Info und Twitch-Link.
Voraussetzung: Discord-Webhook (siehe webhook-setup.md) + Webhook-Permission für @everyone Patterns: Stream Online Trigger + Discord Basic Webhook Sub-Actions: 1-3
Action: [Event] Discord Live Notification¶
Trigger¶
Twitch → Channel → Stream Online
Verfügbare Variablen vom Trigger¶
| Variable | Inhalt |
|---|---|
%game% |
Aktuelle Kategorie |
%gameId% |
Game-ID |
%startedAt% |
Stream-Start-Timestamp |
%tags% |
Stream-Tags |
%broadcastUser% |
Display Name |
%broadcastUserName% |
Login |
Sub-Action 1: Discord Basic Webhook¶
Pfad: Integrations → Discord → Basic Webhook
| Feld | Wert |
|---|---|
| Webhook Name | Live-Notification |
| Webhook URL | (deine URL) |
| Username | AzaCraft Stream |
| Content | siehe unten |
Content (mehrzeilig):
@everyone 🔴 **%broadcastUser% IS LIVE!**
🎮 Game: **%game%**
🔗 https://twitch.tv/%broadcastUserName%
Jetzt joinen und chillen 👀
Action-Tree¶
[Event] Discord Live Notification (Trigger: Stream Online)
└── 1. Discord Basic Webhook:
Content: "@everyone 🔴 **%broadcastUser% IS LIVE!**\n🎮 %game%\n🔗 ..."
Voraussetzung für @everyone¶
Webhook muss in Discord die Permission Mention @everyone haben:
- Channel-Settings → Permissions
- Role
@everyoneoder Webhook-Role - Mention @everyone, @here, and All Roles: ✅
Sonst rendert Discord @everyone als reinen Text statt Ping.
Variante: Mit Role-Ping statt @everyone¶
Höflicher als @everyone — nur interessierte User pingen:
- In Discord eine
@Stream-NotificationsRolle anlegen - Self-Assign-Channel wo User die Rolle selbst aktivieren können (mit Reaction-Roles-Bot oder Discord's eigene Onboarding)
- Role-ID via Rechtsklick auf Rolle (Developer Mode an)
- Im Webhook-Content:
So bekommen nur die Notifications die explizit wollen.
Variante: Mit Stream-Title als Header¶
Content: |
<@&123456789012345678> 🔴 **%broadcastUser% IS LIVE!**
📺 **%streamTitle%**
🎮 %game%
🔗 https://twitch.tv/%broadcastUserName%
(Stream-Title ist via Stream-Online-Trigger evtl. nicht direkt verfügbar. Bei Bedarf vorher Twitch → User → Get User Info for Target mit Self-Lookup laufen lassen — siehe !title Doku.)
Bessere Reihenfolge mit Title-Lookup:
[Event] Discord Live Notification
├── 1. Get User Info for Target (User Login = %broadcastUserName%)
│ Setzt %targetChannelTitle%
└── 2. Discord Basic Webhook:
Content: "<@&...> 🔴 IS LIVE!\n📺 %targetChannelTitle%\n🎮 %game%\n🔗 ..."
Variante: Mit Thumbnail / Stream-Preview¶
Twitch generiert Stream-Thumbnails wie:
{timestamp} als Cache-Buster. Im Discord-Content:
Content: |
@everyone 🔴 LIVE!
https://static-cdn.jtvnw.net/previews-ttv/live_user_azazelitv-1280x720.jpg?_=%startedAt%
🎮 %game%
🔗 https://twitch.tv/%broadcastUserName%
Discord rendert dann den Stream-Screenshot als Preview-Image automatisch.
Variante: Anti-Spam bei "Stream-Offline-Online-Glitch"¶
Manchmal flapped Twitch's Stream-Online-Status (offline → online → offline → online). Würde 3× pingen — nervig.
Lösung: Edge-Detection mit Persisted Global:
[Event] Discord Live Notification
├── 1. Global (Get): lastStreamStartNotified → lastNotify
├── 2. Set Argument: nowEpoch = $unix-now()$ (Inline Func)
├── 3. Set Argument: timeSince = $sub(%nowEpoch%, %lastNotify%)$
├── 4. If/Else: %timeSince% Less Than 3600 (1 Stunde)
│ └── Break (zu früh — wurde grad erst gepingt)
├── 5. Global (Set): lastStreamStartNotified = %nowEpoch% (Persisted)
└── 6. Discord Basic Webhook: "...IS LIVE..."
Pingt nicht mehr als 1× pro Stunde. Inline-Function-Syntax kann variieren, ggf. mit Pattern-Math anpassen.
Stream-Offline-Notification (optional)¶
Wenn du auch "Stream-Ende" posten willst (oft NICHT empfehlenswert weil spammy):
Action: [Event] Discord Stream End¶
Trigger: Twitch → Channel → Stream Offline
└── Discord Basic Webhook:
Username: AzaCraft Stream
Content: 🔴 Stream ist vorbei. Danke fürs Zuschauen! VOD: https://twitch.tv/%broadcastUserName%/videos
Persönliche Empfehlung: kein @everyone bei Stream-End, nur Plain-Post oder Role-Ping.
Häufige Fallen¶
- @everyone wirkt nicht als Ping — Webhook hat nicht die Permission. Channel-Settings prüfen
- Twitch-Status-Flicker — Stream-Online feuert mehrfach kurz hintereinander → Mehrfach-Ping. Edge-Detection nutzen
- Discord-Preview lädt nicht — wenn Twitch-URL gerade nicht erreichbar, lädt Discord-Embed nicht. Manuell refreshen
- Mit @everyone in zu vielen Channels spammen — Discord-Server-Rules respektieren, evtl. nur in
#announcements
Erweiterung: Auto-Delete bei Stream-End¶
Variante mit Cleanup: Live-Message wird beim Stream-End gelöscht (Discord findet's saubererer).
Aber: Discord Basic Webhook in SB unterstützt nur POST (kein DELETE). Volles Message-Management braucht C# oder einen Discord-Bot — über Scope.
Pragmatisch: alte Live-Notifications einfach im Channel stehen lassen, ist ja Historie.
Quellen¶
- Discord Basic Webhook: https://docs.streamer.bot/api/sub-actions/integrations/discord/basic-webhook
- Stream Online Trigger: https://docs.streamer.bot/api/triggers/twitch/channel/stream-online
- Webhook Setup: webhook-setup.md