Modern Discord Music Bot with High-Quality Audio
Slash Commands • Multi-Language • Docker Ready • Interactive Search
Everything you need for the perfect music experience
Powered by Lavalink for crystal-clear music playback with minimal latency and robust connection management
Advanced search with pagination, multi-selection, and visual navigation for discovering new music
Discord.js v14 slash commands with auto-completion and parameter validation for ease of use
Built-in support for English, Spanish, and Turkish with easy extensibility for additional languages
Rich embeds with interactive buttons for complete playback control and queue management
Deploy instantly with Docker Compose using official pre-built images - no complex setup required
Flexible permission system with admin override and role-based access control for server management
Smart track resolution with ISRC matching for accurate Spotify track discovery and playback
No database required - perfect for containerized deployments with automatic queue state management
12 comprehensive slash commands for total music control
/play
Essential
Play music from URL or search query
<query>
- Song URL or search terms
/play Rick Astley Never Gonna Give You Up
/pause
Control
Toggle pause/resume playback
/pause
/skip
Playback
Skip to the next track in queue
/skip
/back
Playback
Play the previous track from history
/back
/stop
Control
Stop playback and disconnect from voice channel
/stop
/volume
Control
Adjust playback volume
<level>
- Volume level (1-100)
/volume 75
/search
Interactive
Interactive search with pagination and multi-selection
<query>
- Search terms (max 200 characters)
/search ambient music
/queue
Info
Display current queue with pagination
/queue
/clear
Queue
Clear the entire queue
/clear
/shuffle
Queue
Shuffle the current queue randomly
/shuffle
/loop
Queue
Cycle through loop modes (off → track → queue)
/loop
/nowplaying
Info
Show detailed information about the current track
/nowplaying
Browse search results with navigation buttons, select multiple tracks, and add them to the queue with visual feedback.
Automatic player interface with interactive buttons for all playback controls and real-time status updates.
Off - No looping | Track - Loop current track | Queue - Loop entire queue
All commands respect role-based permissions with admin override functionality.
Essential setup before deployment
BeatDock requires ALL THREE Discord Privileged Gateway Intents to function properly:
Deploy BeatDock in just 4 simple steps
Download the BeatDock source code to your server
git clone https://github.com/lazaroagomez/BeatDock.git
cd BeatDock
Create .env
file with your Discord bot credentials
# Copy the example file
cp .env.example .env
# Edit with your credentials
# Discord Bot Configuration (Required)
TOKEN=your_discord_bot_token_here
CLIENT_ID=your_discord_client_id_here
# Lavalink Configuration
LAVALINK_HOST=lavalink
LAVALINK_PORT=2333
LAVALINK_PASSWORD=youshallnotpass
# Optional: Spotify Integration
SPOTIFY_ENABLED=false
SPOTIFY_CLIENT_ID=your_spotify_client_id_here
SPOTIFY_CLIENT_SECRET=your_spotify_client_secret_here
# Optional: Additional Settings
DEFAULT_LANGUAGE=en
DEFAULT_VOLUME=80
ALLOWED_ROLES=
Register slash commands with Discord
docker compose run --rm bot npm run deploy
Launch the bot and Lavalink server with Docker Compose
# Start all services
docker compose up -d
# View logs (optional)
docker compose logs -f
docker compose down
docker compose restart
docker compose logs -f
docker compose pull && docker compose up -d
Complete .env file template
# ============================================================================= # BEATDOCK CONFIGURATION FILE # ============================================================================= # Discord Bot Configuration (Required) TOKEN=your_discord_bot_token_here CLIENT_ID=123456789012345678 # Lavalink Configuration (Required for Docker setup) LAVALINK_HOST=lavalink LAVALINK_PORT=2333 LAVALINK_PASSWORD=youshallnotpass # Optional: Spotify Integration SPOTIFY_ENABLED=false SPOTIFY_CLIENT_ID=your_spotify_client_id_here SPOTIFY_CLIENT_SECRET=your_spotify_client_secret_here # Optional: Bot Behavior Settings DEFAULT_LANGUAGE=en QUEUE_EMPTY_DESTROY_MS=30000 EMPTY_CHANNEL_DESTROY_MS=60000 DEFAULT_VOLUME=80 ALLOWED_ROLES= # Optional: Advanced Lavalink Reconnection Settings LAVALINK_MAX_RECONNECT_ATTEMPTS=10 LAVALINK_BASE_DELAY_MS=1000 LAVALINK_MAX_DELAY_MS=30000 LAVALINK_HEALTH_CHECK_INTERVAL_MS=30000 LAVALINK_RESET_ATTEMPTS_AFTER_MINUTES=5 # ============================================================================= # END OF CONFIGURATION # =============================================================================
TOKEN
- Discord bot token from Developer PortalCLIENT_ID
- Discord application/client IDen
- English (default)es
- Spanishtr
- Turkish