Discord bot for music playback on Minecadia: /music panel, Lavalink, and the web dashboard.
/music— Components V2 in-channel music player panel- Lavalink playback (YouTube, SoundCloud, etc.)
- Web dashboard at
MUSIC_PUBLIC_BASE_URL(defaulthttps://music.kartersanamo.com) - Discord Activity — launch the dashboard inside Discord from the panel (Launch Dashboard button)
Required once per application (DISCORD_CLIENT_ID in .env):
- Open Discord Developer Portal → your Minecadia Music app.
- Activities → Settings: enable Activities, then under Supported Platforms check Web, iOS, and Android (mobile is off by default — without iOS/Android, Launch Dashboard fails on phones with error 50231).
- Activities → URL Mappings: add mapping prefix
/→ targetmusic.kartersanamo.com(host only, nohttps://). - OAuth2: keep redirect
https://music.kartersanamo.com/oauth/callback(used by dashboard OAuth and Activities). - Installation: ensure Guild Install is enabled.
- Bot → OAuth2 URL Generator (or re-invite the bot): include permission Set Voice Channel Status (
SET_VOICE_CHANNEL_STATUS) so the bot can show a hint when it joins voice. - Distribution (optional): submit the Activity for public use; until approved, only the app’s developer team can launch it in production.
After portal setup, restart MinecadiaMusic. Users can launch the dashboard in two ways:
- App Launcher → Minecadia Music — uses the global Entry Point command (registered automatically on bot startup)
/musicpanel → Launch Dashboard — launches directly from the in-channel panel
pip install -r requirements.txt
cp .env.example .env # add DISCORD_TOKEN, DB_*, Lavalink, OAuth
python main.py # or ./run.shInstall and run Lavalink (shared on port 2333):
./scripts/install-lavalink-native.sh
./scripts/run-lavalink-native.shOr use docker/lavalink-compose.yml. See lavalink/application.yml.example.
.env— token, database, Lavalink, OAuth (see.env.example)assets/config.json— roles, music settings, presence
- Create a new Discord application for this bot; enable Server Members Intent and voice permissions.
- Copy Lavalink/OAuth vars from the old Utilities
.envif migrating. - Stop Utilities (or anything on port 8790), start MinecadiaMusic with
./run.sh. - Restart the bot — slash commands sync on startup (
DISCORD_GUILD_IDenables instant guild sync). - Restart Utilities and run
/utilities-syncto remove the old/musiccommand from that app. - Add a tmux pane for MinecadiaMusic alongside the other bots.
- nginx (
nginx/music.kartersanamo.com.conf) still proxies to127.0.0.1:8790.
/music-reload— reload a cog