Fork of discodrome, which has revamped commands and improved fuzzy searching by querying Lidarr's postgresql database.
Find a file
2025-10-13 11:08:19 -04:00
extensions Change hint text 2025-10-11 17:18:05 -04:00
resources Added logo 2025-03-02 17:45:13 -07:00
util Fixed queue and infinite loop bug 2025-02-28 12:08:06 +00:00
.gitignore Added sql function for fuzzy search 2025-10-13 10:35:03 -04:00
data.env.example Renamed data.env to reduce risk of accidentally committing secrets. 2025-04-21 21:49:57 +01:00
data.py Update 2025-02-15 04:18:30 -07:00
discodrome.py Async issue fix 2025-06-14 21:20:53 -06:00
Dockerfile Fixed handling of graceful shutdown 2025-03-01 11:49:09 +00:00
example.docker-compose.yml fuzzywuzzy for better results 2025-10-01 11:36:47 -04:00
fuzzy_music_search.sql Added sql function for fuzzy search 2025-10-13 10:35:03 -04:00
LICENSE Initial commit 2022-12-09 06:25:06 -06:00
player.py More async improvements 2025-06-14 21:28:21 -06:00
README.md Update README.md 2025-10-13 11:08:19 -04:00
requirements.txt Implemented new fuzzy search with pg_trgm 2025-10-11 16:24:54 -04:00
subsonic.py Added basic playlist queuing and listing functionality. 2025-04-21 21:48:05 +01:00
ui.py Added dropdown for /play command and cleaned up the text formatting on the bots messages 2025-10-08 17:18:36 -04:00

Discodrome Icon Discodrome

Subsonic Compatible Discord Music Bot

open issues

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

  1. Follow this guide to migrate the LIdarr database from sqlite to postgresql.
  2. Install the postgres trigram (pg_trgm) extension
  3. Install the serverside function fuzzy_music_search.sql for performing fuzzy searches from any programming language.

Step 1: Create a Discord Bot

  1. Go to the Discord Developer Portal
  2. Click "New Application" and give it a name
  3. Navigate to the "Bot" tab and click "Add Bot"
  4. Under the TOKEN section, click "Reset Token" and copy your new token
  5. Enable the following Privileged Gateway Intents:
    • MESSAGE CONTENT INTENT
    • SERVER MEMBERS INTENT
    • PRESENCE INTENT
  6. Navigate to "OAuth2" → "URL Generator"
  7. Select the following scopes:
    • bot
    • applications.commands
  8. Select bot permissions:
  • Send Messages
  • Connect
  • Speak
  • Use Voice Activity
  • Read Message History
  1. 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

  1. 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