Your server's soundtrack, handled.

A Discord music bot powered by Lavalink. Simple to deploy, easy to use.

Add to Discord Soon View on GitHub
v2.7.4 Apache-2.0 Docker Ready

Features

Everything you need for music in Discord.

Multi-Platform Playback

YouTube, SoundCloud, Bandcamp, Twitch, and Vimeo — all supported out of the box.

Spotify Support

Search Spotify tracks and playlists, resolved seamlessly via YouTube.

Autoplay Mode

Never let the music stop. Autoplay queues related tracks automatically.

Queue Management

Shuffle, loop, play-next, and full queue control at your fingertips.

Interactive Search

Browse search results and pick the exact track you want to play.

Multi-Language

Available in English, Spanish, Turkish, and Italian.

Access Control

Role-based permissions to control who can use the bot.

Docker Deployment

One command to deploy. Pre-built images, no host dependencies.

Public Lavalink Fallback

No self-hosted server needed. Auto-connects to free public Lavalink nodes.

Commands

Simple slash commands. Nothing to memorize.

/play <query>Play a song or add to queue
/search <query>Search and select tracks
/pausePause or resume playback
/skipSkip to next track
/backGo to previous track
/stopStop and disconnect
/queueView the current queue
/shuffleShuffle the queue
/autoplayToggle autoplay mode
/loopToggle loop mode
/clearClear the queue
/volume <1-100>Set playback volume
/lyricsShow lyrics for current song
/filterApply audio effects and EQ
/nowplayingCurrent track info
/inviteGet bot invite link
/aboutBot info and stats

Get Started in 3 Steps

From zero to music in under a minute.

1

Create a Bot Token

Head to the Discord Developer Portal and create a new application. Enable all Privileged Gateway Intents.

2

Deploy with Docker

Create your .env and docker-compose.yml, then run docker compose up -d.

3

Play Music

Use /play in any voice channel. BeatDock handles the rest.

Need more detail? See the full setup guide below.

Setup Guide

Everything you need to get BeatDock running on your server.

1 Prerequisites

2 Discord Developer Portal Setup

Create a new application, then go to the Bot tab and enable all 3 Privileged Gateway Intents:

Presence Intent
Server Members Intent
Message Content Intent

Copy your bot token from this page — you'll need it for the .env file.

3 Environment Configuration

Create a .env file. Only TOKEN is required — everything else is optional.

.env
# Required
TOKEN=your_discord_bot_token

# Spotify (optional)
SPOTIFY_ENABLED=false
SPOTIFY_CLIENT_ID=
SPOTIFY_CLIENT_SECRET=

# Playback
DEFAULT_VOLUME=80
AUTOPLAY_DEFAULT=false
DEFAULT_SEARCH_PLATFORM=ytmsearch

# Language: en, es, tr, it
DEFAULT_LANGUAGE=en

# Access control (optional)
# ALLOWED_ROLES=role_id_1,role_id_2

# Lavalink (leave commented for public server fallback)
# LAVALINK_HOST=lavalink
# LAVALINK_PORT=2333
# LAVALINK_PASSWORD=youshallnotpass

# Timeouts
QUEUE_EMPTY_DESTROY_MS=30000
EMPTY_CHANNEL_DESTROY_MS=60000

4 Configuration Reference

Variable Default Description
TOKENDiscord bot token (required)
SPOTIFY_ENABLEDfalseEnable Spotify search support
SPOTIFY_CLIENT_IDSpotify app client ID
SPOTIFY_CLIENT_SECRETSpotify app client secret
DEFAULT_LANGUAGEenBot language (en, es, tr, it)
DEFAULT_VOLUME80Default playback volume (0–100)
AUTOPLAY_DEFAULTfalseEnable autoplay by default
ALLOWED_ROLESComma-separated role IDs to restrict access
DEFAULT_SEARCH_PLATFORMytmsearchDefault search platform
LAVALINK_PASSWORDyoushallnotpassLavalink server password
QUEUE_EMPTY_DESTROY_MS30000Disconnect after queue empties (ms)
EMPTY_CHANNEL_DESTROY_MS60000Disconnect from empty channel (ms)

5 Deploy

Terminal
mkdir beatdock && cd beatdock

# Add your .env and docker-compose.yml, then:
docker compose up -d

6 Managing the Bot

Terminal
docker compose logs -f          # View logs
docker compose restart          # Restart
docker compose down             # Stop
docker compose pull && \
  docker compose up -d          # Update to latest

No self-hosted Lavalink? No problem — leave the Lavalink variables commented out and BeatDock will automatically connect to free public servers.

Built With