A Discord bot for radio stations that uses the Radio Browser API and provides audio streaming directly to Discord voice channels. The bot is operated via slash commands and offers an intuitive search for radio stations.
Hosted by me: (24/7 HQ): Invite👋
- 🔍 Search for Radio Stations by name, country, or genre
- 🏆 Top Radio Stations sorted by popularity
- 🌍 Country-specific Search for regional stations
- 🎵 Genre-based Search (Rock, Pop, Jazz, News, etc.)
- 🎲 Random Radio Stations for discovery
- 🎧 Audio Streaming directly to Discord voice channels
- 💎 Interactive Buttons for easy operation
- 🎯 Intuitive Slash Commands
- 🔊 Volume Control with dropdown menu
- 📱 Pagination for search results
- ⭐ Favorites System for personal station lists
- 🔄 Reconnection Logic on crash or update
- 🕐 24/7 Mode for continuous operation
- Go to Discord Developer Portal
- Create a new Application
- Go to "Bot" and create a bot
- Copy the bot token
- Go to "OAuth2" → "URL Generator"
- Scopes:
bot,applications.commands - Bot Permissions:
Send Messages,Use Slash Commands,Embed Links,Connect,Speak
- Scopes:
- Invite the bot to your server with the generated URL
# Create environment file
echo "DISCORD_BOT_TOKEN=your_bot_token_here" > .env
# Run with Docker Compose
docker-compose up -d
# View logs
docker-compose logs -f radioss-botexport DISCORD_BOT_TOKEN="your_bot_token_here"
./gradlew run./gradlew shadowJar
java -jar build/libs/radioss-discord-0.1.0-all.jarUse /help in Discord to view all available commands and their usage.
# Build and run locally
docker-compose up --build
# Stop the bot
docker-compose down# Update to latest version
docker-compose pull
docker-compose up -dCreate a .env file:
DISCORD_BOT_TOKEN=your_discord_bot_token_here
UPTIME_HEARTBEAT_URL=https://uptime.betterstack.com/api/v1/heartbeat/your_heartbeat_idOptional:
UPTIME_HEARTBEAT_URL: URL for uptime monitoring (e.g. Better Stack). The bot sends a heartbeat every 60 seconds. If not set, the feature is disabled.
- Language: Kotlin
- Discord Library: JDA 5.1.0
- Audio Library: LavaPlayer 1.3.78
- HTTP Client: OkHttp 4.12.0
- API: Radio Browser API (Selfhosted)
- Build Tool: Gradle
- Java Version: 21
./gradlew build./gradlew test./gradlew shadowJar# Build image locally
docker build -t radioss-discord .
# Run with local image
docker run -e DISCORD_BOT_TOKEN=your_token radioss-discordPlanned enhancements:
- ⭐ Favorites System for personal station lists
- 🔍 Station Search directly in
/playcommand - 📊 Advanced Statistics about radio stations
This project is released under the MIT License.
- Radio Browser API for the comprehensive radio database
- JDA for Discord integration
- LavaPlayer for audio streaming
- OkHttp for HTTP requests