🎵 Music bot for my private Discord server, powered by discord-player
- Music playback from YouTube
- On-disk Opus file cache for subsequent streams
- Cached search powered by Spotify or YouTube
- Relies heavily on slash commands and message components
- Playlists stored in a dedicated channel
- Spotify-like volume normalization
- Recovery mechanism to continue listening after an error
- Redis-backed playback statistics
- AI-powered queue control with the
/promptcommand - Maintenance mode that uses Kubernetes' API
- Lockdown mode for restricting command access temporarily
- Tic-tac-toe
- Friendly
/helpcommand - Integration with Sentry
- Extensive logging powered by Pino
- Easy deployment with a Helm chart
You have two options:
- Use the Helm chart (recommended)
- Use the Docker image from either Docker Hub or GitHub Container Registry
Note
Required environment variables:
REDIS_URL- Redis instance connection string
First, install the Node.js version defined in the .nvmrc file and pnpm (ideally through Corepack).
# Install dependencies
$ pnpm install
# Start the bot in development mode
$ pnpm start
# Build the bot for production
$ pnpm build
# Lint, type check, and test
$ pnpm lint && pnpm tsc && pnpm test
# Test with coverage report
$ pnpm test:coverageIf you are using VS Code or a compatible editor, you can start the bot with a debugger attached using the debug task.
The bot was designed to be used on a single Discord server, on a small scale – typically on one voice channel at once. Therefore, it doesn't scale well horizontally.
- the Docker images are tagged with commit SHAs
- the Helm chart uses a
MAJOR.MINOR.PATCHformat where:- the
PATCHincreases with each Docker image update - the
MINORincreases when other changes are made to the chart itself, e.g., when a Redis version is updated
- the
The project should be consider to be in a pre-alpha stage:
- frequent nightly builds are released
- breaking changes occur often
- existing features may evolve or be removed without notice
No timeline for an alpha/beta release is planned.
Please read the Legal Disclaimer before using this software.
This project contains code generated by Large Language Models (LLMs), under human supervision and proofreading.
MIT