On a 24/7 automated stream, there's no host to interact with chat. The chat bot IS the interaction. A well-designed bot turns passive viewers into an active community.
Why Chat Matters on 24/7 Streams
Viewers stay on 24/7 streams for two reasons:
- The content (music, ambiance, information)
- The community (chatting with other viewers)
Without chat interaction, viewers are just listening to music. With it, they're part of a community hub.
Essential Bot Commands
Information Commands
| Command | Response | Purpose | |---------|----------|---------| | !song | "Now Playing: Track Name - Artist" | Most asked question | | !playlist | Link to playlist | Content discovery | | !schedule | "Stream runs 24/7" | New viewer FAQ | | !socials | Social media links | Cross-platform growth |
Fun Commands
| Command | Response | Purpose | |---------|----------|---------| | !quote | Random motivational quote | Engagement | | !8ball [question] | Random yes/no/maybe | Entertainment | | !flip | Heads or tails | Simple fun | | !hug @user | "User hugs OtherUser" | Community bonding |
Loyalty System
Track viewer engagement and reward regulars:
# Simplified loyalty system
class LoyaltySystem:
def __init__(self):
self.points = {}
def add_watch_time(self, user, minutes):
if user not in self.points:
self.points[user] = 0
self.points[user] += minutes
def get_rank(self, user):
pts = self.points.get(user, 0)
if pts >= 10000: return "Legend"
if pts >= 5000: return "Regular"
if pts >= 1000: return "Familiar"
return "Newcomer"
Viewers earn points for watching time. Points unlock custom chat badges, emotes, or recognition in the stream overlay.
Chat Games
Song Request Voting
Let viewers vote on what plays next:
!vote 1 - Chill Beats
!vote 2 - Jazz Vibes
!vote 3 - Study Focus
Run votes every 30-60 minutes. Ties are broken randomly. This gives viewers ownership of the content.
Chat Trivia
Periodic trivia questions:
Bot: "TRIVIA: What year was YouTube founded? 10 points for first correct answer!"
User1: 2005
Bot: "Correct! User1 earns 10 points!"
Run a trivia question every 15-30 minutes. It sparks conversation and keeps chat active during quiet periods.
Word Chain
Bot: "WORD CHAIN: Start with 'Music'"
User1: "Creative"
User2: "Energy"
User3: "Yesterday"
Simple, inclusive, and generates lots of messages (which makes the chat look active to new viewers).
Moderation
Automated moderation is essential when there's no human moderator:
| Rule | Action | Threshold | |------|--------|-----------| | Spam (repeated messages) | Timeout 60s | 3 identical messages in 30s | | Links | Delete + warning | Any non-whitelisted URL | | Caps lock | Timeout 30s | > 80% caps in message | | Excessive emotes | Warning | > 15 emotes per message | | Banned words | Delete + timeout | Customizable list |
Auto-Moderation Bot
import re
def moderate(message, user):
# Link filter
if re.search(r'https?://', message) and user not in whitelist:
return 'delete', 'Links are not permitted.'
# Spam filter
if is_repeated(message, user, window=30, count=3):
return 'timeout', 'Please don't spam.'
# Caps filter
if len(message) > 10 and sum(1 for c in message if c.isupper()) / len(message) > 0.8:
return 'timeout', 'Please don't use excessive capital letters.'
return 'allow', None
Running the Bot on a VPS
Your chat bot should run on the same VPS as your stream for reliability. If the VPS is up, the bot is up.
# systemd service
[Unit]
Description=Stream Chat Bot
After=network.target
[Service]
Type=simple
User=stream
ExecStart=/usr/bin/python3 /home/stream/bot/main.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
The bot runs as a system service, starting automatically when the VPS boots and restarting if it crashes.
Measuring Engagement
Track these metrics to know if your bot is working:
| Metric | Healthy | Needs Work | |--------|---------|------------| | Messages per hour | 50+ | < 20 | | Unique chatters per hour | 10+ | < 5 | | Command usage per hour | 30+ | < 10 | | Average viewer retention | 15+ minutes | < 5 minutes |
A good chat bot doesn't just respond to commands. It creates an environment where viewers talk to each other, forming the community that keeps them coming back.
