Skip to main content
Simple Discord Music Bot is a high-performance, open-source music bot for Discord servers. It uses Nextcord for slash commands and voice integration, Wavelink for Lavalink control, and a dedicated Lavalink Java node for audio streaming. This keeps the Python bot process lightweight while the audio server handles the heavy work.

What the Bot Does

When a user runs /play in a Discord server, the bot searches YouTube or SoundCloud for the requested song, adds it to a per-guild queue, and streams the audio through a Lavalink node into the voice channel. As each track plays, the bot posts a live “Now Playing” rich embed and updates its own Discord presence with the track title, artist, and a live timestamp. When the queue is exhausted the bot cleans up its embed, resets its presence, and disconnects — no manual cleanup needed.

Key Features

  • Lavalink audio backend — audio decoding and streaming are handled by a dedicated Java process, keeping the Python bot lightweight and stable
  • 18 slash commands — /play, /join, /queue, /nowplaying, /ping, /help, /voteskip, /skip, /pause, /resume, /stop, /volume, /loop, /autoplay, /clearqueue, /shuffle, /previous, and /remove
  • YouTube and SoundCloud search — search by name or paste a direct URL; both video and playlist URLs are supported
  • Playlist support — adding a playlist URL enqueues all tracks at once and reports the playlist name and track count
  • Paginated queue browser — the /queue command opens an interactive, session-locked pagination view so users can browse long queues without flooding the channel
  • Live Now Playing embeds — a persistent embed in the voice channel updates automatically when each new track starts and deletes itself when the queue ends
  • Automated presence sync — the bot’s Discord status reflects the currently playing track, including live start/end timestamps

How the Pieces Fit Together

You issue a slash command in Discord. Nextcord receives it in the modular startup path and delegates the playback logic to cogs/music_commands.py, while cogs/events.py manages the live player UI and queue lifecycle. Wavelink forwards the request to the Lavalink node (a Java process running inside Docker). Lavalink fetches the audio from the source, decodes it, and streams it directly into the Discord voice channel — the Python process never touches raw audio data.

Technology Stack

Explore the Docs

Quickstart

Get the bot running in minutes — clone, configure, and play your first song.

Configuration

Customize environment variables, Lavalink connection settings, and bot permissions.

Lavalink Setup

Deep-dive into running and tuning the Lavalink Docker node.

Playback Commands

Full reference for every slash command the bot exposes.