πŸ“Ί Twitch Bot

EventSub + Chat Integration. V3 hatte 21 Tabellen + 7 Router β€” V4 wird clean.

πŸ”΄ V3 Probleme

14 dokumentierte Issues aus der Code-Analyse

Dual Publishing System

Jedes Event wird an 2 Channels gepublisht (Workflow Engine + Real-Time) mit unterschiedlichen Payload-Formaten. Doppelte Serialisierung, doppelte Logik.

OAuth Token Chaos

Tokens in 3 verschiedenen Stellen: TwitchMonitoredChannel, TwitchCredentials, Web Service Cache. Refresh-Handling inkonsistent β€” kann 10+ Minuten offline sein.

Config in 3 Orten

Database β†’ In-Memory Cache β†’ Redis Events. Wenn Cache-Reload fehlschlΓ€gt, nutzt Bot stale Config ohne Warnung. Kein DB-Fallback wenn Cache leer.

BUGFIX-Pattern ΓΌberall

17Γ— der selbe try-catch BUGFIX in Event-Handlern. NachtrΓ€glich eingefΓΌgt, kein Error-Handling-Strategie. Fehler werden nur geloggt.

Kein Rate Limiting

Bot sendet unbegrenzt Messages. Twitch rate-limitet still β€” gedropte Messages sind unsichtbar. Kein Backpressure.

21 Tabellen

Viel zu viele separate Tables. TwitchBotSetting Key-Value Anti-Pattern. TwitchCommandStats sollte in Command eingebaut sein.

Kein Circuit Breaker

Token-Refresh Failure β†’ alle API Calls feilen still. Kein Alerting, keine Recovery-Strategie. Bot kann 10+ Minuten tot sein.

Command Handler: DB-Query pro Message

Jede Chat-Nachricht triggert einen frischen DB-Lookup. Bei 100+ Messages/Minute = 100+ Queries. Kein Cache, kein Batching.

πŸ”— Shared Patterns mit Discord Bot

Gleiche LΓΆsungen fΓΌr gleiche Probleme

BullMQ Job Queue

Einheitliche Queue fΓΌr Commands an beide Bots. Retry, ACK, Dead Letter. Selbes System wie Discord.

Unified Activity Log

Ein activityLog fΓΌr Discord + Twitch + System. Type-Enum unterscheidet die Source. Ein Ort fΓΌr alles.

WebSocket Real-Time

Bot Events β†’ Redis β†’ WS Events β†’ Panel. Live-Updates fΓΌr Stream Status, Chat Activity, Follows.

🟒 V4 Architektur

Event Flow

Twitch EventSub
WebSocket
β†’
Twitch Bot
Twurple v8
β†’
Redis
Single Event Format
β†’
BullMQ
Workflow Engine
β†’
WS Events
β†’ Panel + Overlays

Recording Integration

Stream Online
EventSub
β†’
Bot publishes
stream.online event
β†’
Media API
Creates Recording
β†’
MediaMTX
SRT already ingesting
β†’
Stream Offline
β†’ Finalize Recording
πŸ“¦ Features

πŸ”΄ Stream Monitoring

  • Online/Offline Detection (EventSub)
  • Auto-Recording Trigger
  • Category/Title Change Tracking
  • Viewer Count Polling
Must Have

πŸ’¬ Chat Bot

  • Feste Commands (!rank, !clip, !shop)
  • Custom Commands (DB-driven)
  • Permission Levels (Mod/VIP/Sub/All)
  • Cooldowns (Global + Per-User)
  • Command Stats
Must Have

πŸŽ‰ EventSub Events

  • Follow / Subscribe / Gift Sub
  • Raid
  • Cheer (Bits)
  • Channel Points Redemption
  • β†’ Alle als Workflow Trigger
Must Have

⏱ Timer Messages

  • Intervall-basiert (Minuten)
  • Min. Chat Activity Filter
  • Game-spezifisch
  • Enable/Disable per Timer
Should Have

🎁 Giveaways

  • Keyword Entry (!enter)
  • Requirements (Follower, Sub, etc)
  • Auto-Draw + Reroll
  • Chat Announcement
Should Have

πŸ“Š Polls & Predictions

  • Twitch Native Polls (API)
  • Twitch Predictions (API)
  • Panel-gesteuert
  • Ergebnisse im Log
Should Have

πŸ† Channel Points

  • Custom Reward Actions
  • Reward β†’ Workflow Trigger
  • Sync Rewards von Twitch
Should Have

πŸ“ˆ Chat Stats

  • Messages pro Channel/Tag
  • Top Chatter Leaderboard
  • Emote Usage Stats
  • Engagement Metrics
Could Have

πŸ‘ Viewer Tracking

  • Viewer Count Graph (historisch)
  • Viewer-Liste: Wer war wann im Stream
  • Twitch API Polling (alle 60s)
  • Session-basiert (pro Stream)
Must Have

πŸ˜‚ Emote Stats

  • BTTV / FFZ / 7TV Cache
  • Usage Tracking pro Emote
  • Top Emotes Leaderboard
  • Emote Trends ΓΌber Zeit
Should Have

πŸ“ˆ Chat Stats

  • Messages pro Channel/Tag
  • Top Chatter Leaderboard
  • Engagement Metrics
Should Have
πŸ“‘ Alle EventSub Subscriptions

~40 Event Types β€” alle als Workflow Trigger verfΓΌgbar

πŸ”΄ Stream

  • stream.online
  • stream.offline
  • channel.update (Title, Game, Tags)

πŸ‘₯ Viewer

  • channel.follow
  • channel.subscribe
  • channel.subscription.gift
  • channel.subscription.message
  • channel.cheer
  • channel.raid

🎯 Interaction

  • channel.channel_points_custom_reward_redemption.add
  • channel.poll.begin / progress / end
  • channel.prediction.begin / progress / lock / end
  • channel.hype_train.begin / progress / end

πŸ›‘ Moderation

  • channel.ban / unban
  • channel.moderator.add / remove
  • channel.vip.add / remove
  • automod.message.hold / update

πŸ“’ Creator

  • channel.ad_break.begin
  • channel.shoutout.create / receive
  • channel.charity_campaign.donate / start / progress / stop
  • channel.goal.begin / progress / end

πŸ’¬ Chat (New API)

  • channel.chat.message
  • channel.chat.notification
  • channel.chat.clear
  • channel.chat.clear_user_messages
  • channel.chat.message_delete

πŸ”” Whispers & Alerts

  • user.whisper.message
  • channel.warning.acknowledge
  • channel.warning.send
  • channel.suspicious_user.message / update

πŸ”§ System

  • user.authorization.grant / revoke
  • extension.bits_transaction.create
  • drop.entitlement.grant
  • conduit.shard.disabled

β†’ Alle Events = Workflow Trigger

Jedes dieser Events wird automatisch als Trigger in der Workflow Engine registriert. Der User entscheidet im Drag'n'Drop Editor was bei welchem Event passiert: Overlay zeigen, Chat-Nachricht senden, OBS Scene wechseln, Sound abspielen, etc.

πŸ–₯ Admin Panel β€” Mockup

Twitch-Bereich im Admin Panel

codenull.de/admin/twitch

Twitch Dashboard

Live Status und aktuelle Statistiken

● LIVE Playing: Elden Ring Β· 234 Viewers Β· Uptime: 02:34:12
12.4K
Followers
892
Subscribers
1,247
Chat Today
23
New Follows

Recent Events

TimeTypeUserDetails
19:23SubxXGamer42XxTier 1 Β· 6 months
19:21BitsDankDonator500 Bits Β· "GG!"
19:18FollowNewViewer123New follower
19:15RaidFriendlyStreamer87 viewers
πŸ—„ Datenmodell β€” V3 β†’ V4

Von 21 Tabellen auf 11. Shared Patterns mit Discord.

V3 (21 Tabellen)V4 (11 Tabellen)Γ„nderung
TwitchMonitoredChannel (38 fields!)twitchChannel (cleaned, settings as JSON)Vereinfacht
TwitchBotSetting (key-value)β†’ twitchChannel.settingsEliminiert
TwitchChannelBotSettings→ twitchChannel.botConfigZusammengeführt
TwitchCredentials→ twitchChannel.tokens (encrypted JSON)Vereinfacht
TwitchCommand + TwitchCommandStats + TwitchBotCommandUsage→ twitchCommand (stats inline)3→1
TwitchTimerMessagetwitchTimerRenamed
TwitchGiveawaytwitchGiveawayBehalten
TwitchPoll + TwitchPredictionBehalten (Twitch API driven)Behalten
TwitchRewardActiontwitchRewardRenamed
TwitchFollower + TwitchSubscribertwitchFollower + twitchSubscriberBehalten
TwitchUser + TwitchEmoteCacheβ€”Entfernt (Twitch API)
TwitchChatStats→ Aggregation QueryDenormalisiert
TwitchLog (27 fields)β†’ activityLog (shared)Unified
TwitchBannedWord + TwitchLinkFilter→ twitchChannel.filters (JSON)Vereinfacht
βœ… Entscheidungen

GeklΓ€rt am 2026-03-18

1. Multi-Channel: Ja, alle gleich

Jeder Channel bekommt alle Features (Commands, Timers, Giveaways etc). Kein abgestuftes System β€” voller Funktionsumfang fΓΌr jeden verbundenen Channel.

2. Bot Account: butler_jamie

Separater Bot Account bleibt. Chat-Nachrichten kommen von butler_jamie, nicht vom Streamer-Account. EventSub lΓ€uft ΓΌber den Broadcaster Token.

3. Kein Custom Chat Filter

Twitch AutoMod reicht aus. Kein eigener Spam/Link/Caps Filter. Spart Entwicklungszeit β€” Twitch's natives System ist gut genug.

4. Emote Stats: Ja

BTTV, FFZ, 7TV Emotes cachen und Usage tracken. Top Emotes Leaderboard, Trends ΓΌber Zeit. Cached ΓΌber API, Refresh periodisch.

5. MediaMTX startet Recording

Twitch Bot tracked nur Stream Status (online/offline/title/game). Recording wird von MediaMTX on-publish Hook gestartet β€” komplett unabhΓ€ngig vom Twitch Bot.

6. Viewer Tracking + Userliste

Historischer Viewer Count Graph (Polling alle 60s). Plus: welche User waren wann im Stream (Chatters API). Session-basiert pro Stream fΓΌr Retention-Analyse.

7. Alle EventSub Events abonnieren

~40 Event Types. Alle werden als Workflow Trigger registriert. Title + Game Changes als eigene Events geloggt. Maximale FlexibilitΓ€t fΓΌr Automations.

Codenull Platform Β· Twitch Bot Module Planning Β· 2026-03-18