A modern, type-safe Discord bot that monitors streaming platforms and sends beautiful notifications when your favorite streamers go live. Built with TypeScript, discord.js v14, and modern Discord components.
No API keys required - Uses public endpoints and HTML parsing to fetch live status.
Simple setup - Just add your bot token and run. Uses Enmap for zero-config persistent storage.
- Multi-Platform Support: Kick, Twitch, YouTube, Rumble, TikTok
- Real-Time Alerts: 60-second polling with smart duplicate detection
- Modern Discord UI: Buttons, select menus, modals, rich embeds
- Type-Safe: Full TypeScript with strict typing
- Zero API Keys: Works without platform API credentials
- Zero Config Database: Enmap handles persistence automatically
- Per-Server Config: Each Discord server manages its own streamer list
| Command | Description | Permissions |
|---|---|---|
/streamer add |
Add a streamer to track | Manage Channels |
/streamer remove |
Remove a streamer | Manage Channels |
/streamer list |
List all tracked streamers | None |
/help |
Interactive help menu | None |
/ping |
Check bot latency | None |
Options:
platform- Choose: Kick, Twitch, YouTube, Rumble, TikTokusername- Streamer's username/handle
Flow:
- Bot shows embed with channel select menu
- Pick notification channel
- Streamer added → Success embed
Flow:
- Bot shows embed with streamer select menu (your tracked streamers)
- Pick streamer to remove
- Confirm with Yes/Cancel buttons
- Streamer removed → Success embed
Shows:
- All tracked streamers with platform emoji
- Notification channel for each
- Live status indicator (🔴 LIVE)
- Pagination buttons if > 10 streamers
# 1. Install dependencies
npm install
# 2. Copy environment file
cp .env.example .env
# 3. Add your Discord bot token to .env
DISCORD_TOKEN=your_token_here
# 4. Deploy slash commands
npm run deploy
# 5. Start the bot
npm startnpm run dev # Run with hot reload
npm run build # Compile TypeScript
npm run typecheck # Check types
npm run lint # Lint code| Platform | Color | Emoji |
|---|---|---|
| Kick | #53FC18 |
🟢 |
| Twitch | #9146FF |
🟣 |
| YouTube | #FF0000 |
🔴 |
| Rumble | #85C742 |
🟢 |
| TikTok | #010101 |
⚫ |
Every 60 seconds:
├── For each guild
│ ├── Get tracked streamers from Enmap
│ ├── For each streamer
│ │ ├── Call platform checker
│ │ ├── Compare title with cache
│ │ ├── If live + new title → Send alert
│ │ └── Update streamer data
│ └── Save to Enmap
┌─────────────────────────────────────────┐
│ 🟣 StreamerName is LIVE on Twitch │
├─────────────────────────────────────────┤
│ Playing Minecraft - Building a Castle │
│ │
│ 👀 Viewers │ 👥 Followers │ ⏰ Started│
│ 1,234 │ 50.2K │ 2h ago │
│ │
│ [Stream Preview Thumbnail] │
│ │
│ [🟣 Watch on Twitch] │
└─────────────────────────────────────────┘
GuildsGuildMessages
- Send Messages
- Embed Links
- Use External Emojis
Important
Disclaimer: Please note that the APIs used in this bot are not owned or maintained by us. The usage of these APIs is at your own risk, and we make no guarantees regarding the availability, accuracy, or functionality of these services. If you are the endpoint owner and would like to remove them please open a issue and ill handle it accordingly.
This project is licensed under the MIT License. For more details, see the LICENSE file in the repository.