24/7 Discord radio bot with real-time stream and station control.
- 24/7 streaming in voice channels
- Interactive station switcher (via dropdown)
- Real-time stream display (embed)
- Automatic reconnect to the designated voice channel if disconnected
- Voice channel control: Ensure the bot only operates in the designated voice channel
npm install
cp env.example .env
Edit .env
with your bot credentials:
DISCORD_TOKEN=your_token_here
GUILD_ID=...
EMBED_CHANNEL_ID=...
VOICE_CHANNEL_ID=...
Start the bot:
npm start
radio/
├── config/ # Environment config
├── img/ # Assets (avatar, embed)
└── src/
├── core/ # Streaming logic (stationlist, initialize, player)
├── embed/ # Embed builder (menu, interaction)
├── events/ # Event listeners
└── utils/ # Logger, time formatter
- BBC Radio 1
- BBC Radio 2
- BBC Radio London
- BBC Radio 6 Music
- Capital FM
- ABC triple J
- CBC Radio One
- Radio Disney - DFW
- Radio Disney - SA
- NetRadio
- KEXP 90.3 FM
- NPR Radio
- 108 JAMZ
- Deutschlandfunk
- RAI Radio 1
- RAI Radio 2
- SBS PopAsia
- Chillout Antenne
- Virgin Radio
- HITS Mandarin
- Mandarin Station
- Classic Rock Florida
- 977 Today HITS
- Smooth Radio
- Olímpica Stereo
- Node.js v18+ (recommended: v20 via
.nvmrc
) - FFmpeg (included via
ffmpeg-static
) - Discord bot token with voice permissions
- Voice encryption dependency:
tweetnacl
Major Fixes:
- Automatic reconnection: Bot will now reconnect and play the last station if disconnected from the voice channel.
- Stable error handling: If the bot is unable to connect to the voice or text channel, the process will exit with a clear error log.