BMO Wiki

Music 🎵

Type a song name, and BMO joins your voice channel and plays it — with a shared queue everyone can add to.

What it does

The music module turns any voice channel into a shared jukebox. A member types !play followed by a song name or a YouTube link, BMO hops into their voice channel, and the song plays for everyone in it. More requests stack up in a queue and play one after another, so a movie night or hangout can have a soundtrack without anyone screen-sharing a browser tab.

Unlike most BMO modules, music has no dashboard page and nothing to configure — it works entirely through chat commands. If the module is active on your server, members can start playing music immediately.

Music is an optional module that the bot's operator switches on when the bot is set up (it needs extra software on the machine running the bot). If the commands below get no response while the rest of BMO works, the module isn't enabled — ask in the support server, or if you host BMO yourself, set ENABLE_MUSIC_COG=1 in the bot's .env file.

Before you start

Commands

CommandAlso works asWhat it does
!play <song or link> !p Searches YouTube for your text (or uses your link), adds the top result to the queue, and starts playing if nothing is on. BMO joins — or moves to — your voice channel.
!skip Ends the current song immediately; the next queued song starts on its own. If nothing is playing, BMO says so.
!queue !q Shows what's playing now and the next songs waiting (up to 10 are listed).
!stop Stops the music, wipes the whole queue, and disconnects BMO from the voice channel.
!stop is the "everyone's done" button — it throws away every queued song, not just the current one. If you only want the next track, use !skip.

Requesting songs

Both of these work with !play:

YouTube is the supported source. Links from other sites may sometimes work (the downloader BMO uses understands many sites), but only YouTube gets the fallbacks and error handling described on this page, so stick to it for reliable results.

Playlist links queue one song, not the whole playlist. Playlist support is deliberately switched off in the player, so pasting a playlist URL adds a single track. To build a set, add songs one !play at a time — they stack in the queue in the order people request them.

How the queue behaves

BMO follows the requester: if someone runs !play from a different voice channel, the bot moves to their channel and the music moves with it. Agree on one hangout channel to avoid tug-of-war.

Sound quality

You don't have to do anything for this — it's automatic — but it explains a couple of things you might notice:

Troubleshooting

What you seeWhat it means
"Join a voice channel first." You ran !play while not in a voice channel. Join one and try again.
"YouTube blocked playback from this server (bot check)." YouTube is refusing requests from the machine the bot runs on — common for bots on hosting providers. Only the bot's operator can fix this, by pointing YTDLP_COOKIES in the bot's .env at a cookies.txt file exported from a logged-in browser. Cookies expire after a while, so this can come back and need a fresh export.
"Could not start audio (ffmpeg)." The machine running the bot is missing FFmpeg (the audio engine). A self-hoster needs to install it and make sure it's on the system PATH.
"Voice connection failed." / "Voice connection timed out." BMO couldn't complete the voice handshake. Usually temporary — try again; if it persists, check that BMO can Connect to that channel.
Music commands get no reply at all The music module isn't enabled on this bot — see the note at the top of this page.

Current limitations

The music module is intentionally simple. Things it does not have yet: