Fork of discodrome, which has revamped commands and improved fuzzy searching by querying Lidarr's postgresql database.
| extensions | ||
| resources | ||
| util | ||
| .gitignore | ||
| data.env.example | ||
| data.py | ||
| discodrome.py | ||
| Dockerfile | ||
| example.docker-compose.yml | ||
| fuzzy_music_search.sql | ||
| LICENSE | ||
| player.py | ||
| README.md | ||
| requirements.txt | ||
| subsonic.py | ||
| ui.py | ||
Discodrome
Subsonic Compatible Discord Music Bot
A discord music bot that seamlessly streams music from your personal music server directly to your voice channels. Works great with Navidrome, and other subsonic compatible music servers.
🎮 Commands
| Command | Description |
|---|---|
/play |
Plays a specified track |
/album |
Plays a specified album |
/playlist |
Plays a specified playlist |
/disco |
Plays an artist's entire discography |
/queue |
View the current queue |
/clear |
Clear the current queue |
/shuffle |
Shuffles the current queue |
/skip |
Skip the current track |
/stop |
Stop playing the current track |
/autoplay |
Toggle autoplay |
/playlists |
List available playlists |
🚀 Complete Setup Guide
Step 0: Configure Postgresql
- Follow this guide to migrate the LIdarr database from sqlite to postgresql.
- Install the postgres trigram (pg_trgm) extension
- Install the serverside function fuzzy_music_search.sql for performing fuzzy searches from any programming language.
Step 1: Create a Discord Bot
- Go to the Discord Developer Portal
- Click "New Application" and give it a name
- Navigate to the "Bot" tab and click "Add Bot"
- Under the TOKEN section, click "Reset Token" and copy your new token
- Enable the following Privileged Gateway Intents:
MESSAGE CONTENT INTENTSERVER MEMBERS INTENTPRESENCE INTENT
- Navigate to "OAuth2" → "URL Generator"
- Select the following scopes:
botapplications.commands
- Select bot permissions:
Send MessagesConnectSpeakUse Voice ActivityRead Message History
- Copy the generated URL and paste it in your browser to invite the bot to your server
Step 2: Set Up Your Environment
Required Information:
- Discord Bot Token: From step 1
- Discord Server ID: Right-click your server icon → "Copy ID" (Developer Mode must be enabled in Discord settings)
- Your Discord User ID: Right-click your username → "Copy ID"
- Subsonic Server Details: URL, username, and password for your music server
Step 3: Deploy with Docker Compose
- Replace environment variables appropriately for your system:
services:
discodrome:
image: forgejo.underthere.xyz/cmoriarty/discodrome:latest
restart: always
volumes:
- ./discodrome:/data
environment:
- SUBSONIC_SERVER=https://your_subsonic_server
- SUBSONIC_USER=CHANGE_ME
- SUBSONIC_PASSWORD=CHANGE_ME
- DISCORD_BOT_TOKEN=CHANGE_ME
- DISCORD_TEST_GUILD=CHANGE_ME
- DISCORD_OWNER_ID=CHANGE_ME
- PG_DB=lidarr-main
- PG_HOST=CHANGE_ME
- PG_PORT=5432
- PG_PW=CHANGE_ME
- PG_USER=CHANGE_ME
⚙️ Configuration Options
Environment Variables
| Variable | Description | Required |
|---|---|---|
SUBSONIC_SERVER |
URL of your Subsonic server (include http/https) | Yes |
SUBSONIC_USER |
Username for your Subsonic server | Yes |
SUBSONIC_PASSWORD |
Password for your Subsonic server | Yes |
DISCORD_BOT_TOKEN |
Your Discord bot token | Yes |
DISCORD_TEST_GUILD |
Discord server ID where commands will be registered | Yes |
DISCORD_OWNER_ID |
Your Discord user ID | Yes |
BOT_STATUS |
Custom status message for the bot | No |
PG_DB |
"lidarr-main" is the default db names Lidarr uses | Yes |
PG_HOST |
URL to the postgresql database | Yes |
PG_PORT |
5432 is the default port postgresql uses | Yes |
PG_USER |
User with read permissions on the db | Yes |
PG_PW |
Password for a user with read permissions on the db | Yes |
Supported Subsonic Servers
- Navidrome
- Airsonic
- Subsonic
- Gonic
- Ampache (with Subsonic API enabled)
- Jellyfin (with Subsonic plugin)
🛠️ Technical Stack
- Discord.js v14
- Node.js
- Subsonic API
- Docker
- FFmpeg for audio processing
- Lidarr migrated to use Postgresql with the pg_trgm extension
👥 Contributing
We welcome contributions! Whether it's:
- 🐛 Reporting bugs
- 💡 Suggesting features
- 📝 Improving documentation
- 🔍 Submitting fixes
- ✨ Adding new features
Please check our GitHub Issues before submitting new ones.
📝 License
GPL-3.0 license - feel free to use this project for most any purpose.
🙏 Acknowledgments
This project is a fork of Submeister by Gimzie. We've built upon their excellent foundation to add new features and improvements while maintaining the core functionality that made the original project great.
Forked with ❤️ by cmoriarty