MusicBot logo MusicBot

These are the latest changes to the MusicBot. Please check this page after bot updates to see what has changed. To learn how to update your bot, see this page.

15th December 2021

December 15, 2021 major

Review merge

This release merges all changes from the review branch of MusicBot into the main branch. This contains multiple bug fixes, improvements, and changes. MusicBot requires Python 3.8 or higher.

Important: Discord gateway intents

Please note that MusicBot requires privileged intents to function. You need to enable each of the Gateway Intents on your Discord Application’s ‘Bot’ page.



  • ⚡️ Switched from to pycord fork, which is maintained.
  • ⚡️ Switched from youtube-dl to yt-dlp fork, which is maintained.
  • Add example docker-compose.yml file for Docker deployment.
  • Bot will deafen itself if it has permission.
  • Fix for Soundcloud sets.
  • A lot of cleanup and changes for underlying code, fixing a myriad of issues.

26th August 2019

August 26, 2019 minor

  • Fix bug related to deleting entries
  • Suppress no PATH warning and run with –user flag when using pip with update script
  • Messages from bots are now ignored, exceptions can be added in the config file
  • Fix bug preventing playing playlists that contain some bad entries
  • Bots and inactive users in voice channels are now ignored for the sake of autopause
  • !perms command now also accepts a user’s name or ID
  • Displayed version number for the bot now consists of the latest Git tag, commits since that tag, and the last commit hash

12th May 2019

May 12, 2019 minor

  • Discard any query arguments from Spotify URIs before we contact Spotify’s API
  • Fix a bug with the bot’s now playing counter not updating
  • ffmpeg binaries have been updated from 20180307-5ab0ecf -> 20190505-e384f6f
  • New option added to allow the bot to message users when their song is being played instead of sending a message to a channel
  • New option added to disable now playing messages for automatic entries
  • Pass globals to debug command
  • Fix an issue where the volume was not updating until a song finished
  • Adjusted a check in on_message

26th April 2019

April 26, 2019 minor

New versioning approach:

From now on, MusicBot versions will use the date of the release to the master branch (shown as release-DDMMYY when running the bot), and not an arbitrary version number. This change is because it makes it easier to see how old the version is that a user is using, and because the old versioning was fairly nonsensical.


  • Add Taiwan (tradiitonal Chinese) translation file
  • Change definition in requirements.txt to use PyPI version
  • Stop the bot from throwing summon error on voice state update
  • Fix “module ‘aiohttp’ has no attribute ‘Timeout’” raised when queueing unrecognized source using the play command
  • Add Spanish translation file
  • Add Swedish translation file
  • Added now playing message for automatic entries
  • Fix Bandcamp album issue
  • Fix an issue where the now playing message was not deleted after a song ended


January 29, 2019 minor

  • Add Russian translation file
  • Fixes for blank strings in command arguments
  • Implement command alias feature
  • Fix an issue with the Docker entrypoint not updating Python dependencies
  • Ensure we’re in the bot directory for run and update scripts
  • Correctly list servers in server_names.txt


December 14, 2018 minor

  • Fix a “You don’t have permission to use that command” issue
  • Better checks for if the player is dead or paused
  • Fix an issue where the player would stop despite remaining entries


December 06, 2018 minor

  • Fix parts of Python path which contain spaces turns into args in the update script
  • Fix loading persistent queues that are saved prior the rewrite
  • BindtoChannels and AutojoinChannels ids can now be separated with only a single comma
  • Transform and remove remnants of pre-rewrite code
  • Fixed a permission bug that escaped from sight because we turn owner_id into integer too late
  • Fall back to old behavior when there are no owner perms in the permissions file
  • Attempt to eradicate the ‘voice being None’ bug
  • on_server_unavailable -> on_guild_unavailable
  • More band-aid fixes for owner permissions
  • Improve Docker build process with new entrypoint and Travis CI config
  • Added checking for as it can be None
  • Option to check if owner is in a server and leave if they’re not
  • Improvements to the bash scripts
  • Added Thai translation file
  • Allow servers without bound channels
  • Use /tracks endpoint for all Spotify playlists
  • Add youtube:playlist to example permissions extractors


August 27, 2018 minor

  • Fixed typo when processing Spotify playlists
  • Added shebangs to and


August 18, 2018 major rewrite

Starting from version 1.9.8, MusicBot requires the rewrite version of It can be installed using the update files included, or by running python3 -m pip install -U -r requirements.txt.

Non-extensive list of changes:

  • A fallback will be used if an i18n file cannot be parsed
  • The save command now allows passing a custom URL
  • Additional error handling has been added for experimental EQ
  • Allow skipping bot update (but updating dependencies) when running the update script
  • LegacySkip has been added as an option for those who prefer old skip behaviour
  • Experimental EQ handling will now happen asynchronously
  • Experimental EQ handling will take place after a track is downloaded, rather than before playing, to allow processing while the bot is playing other media
  • A max search limit has been added to permissions
  • Additional error handling has been added for Spotify
  • URLs are now supported
  • Experimental EQ will no longer be enabled by default
  • Changes have been made to the Dockerfile to allow it to work again
  • now handles websocket reconnects and other issues, hopefully reducing the bot’s random disconnects
  • Fixed streams using the wrong options for ffmpeg
  • Large Spotify playlists will now be handled properly
  • Fix an issue with setting the bot’s avatar

Translations have been contributed (thanks!):

  • Japanese
  • Korean


March 10, 2018 major

Spotify URIs

The bot can now handle Spotify URIs, aka URIs that begin with spotify:. This can be used to add an album or playlist from Spotify to the bot, however, as streaming direct from Spotify is against their Terms of Service, the bot tries to find the nearest match for the song(s) on YouTube instead.


  • Update scripts have been renamed. Use python to run it, or the platform-specific update scripts.
  • The restart command has been changed and now works correctly, but will not “hard restart” your entire bot or refresh the configuration.
  • If you use the UseEmbeds option in the config, embed-style responses will be used for the bot.
  • Owners, or those that can instaskip songs, must use !skip f to do so.


  • Docker support has been fixed.
  • Internationalization support.
  • Shell script for updating dependencies should use the correct Py version
  • Help command should use the correct URL to this repository
  • Added continuous integration tests
  • blacklist.txt and whitelist.txt are now created when the bot runs
  • New config option to write current song to file
  • New config option to change autoplaylist order
  • Improved how the autoplaylist actually plays, no more dupes three times in a row
  • A .netrc will be used with yt*dl if present on the user’s machine
  • The config file has been reworded and cleaned up
  • A new command has been added to enable and disable various options for the bot’s session
  • Run script for Linux and Mac has been merged
  • Shell scripts are now executable by default
  • Times printed by the bot that did not have leading zeroes before will now have leading zeroes
  • A permission has been added for allowing the person to skip their own songs
  • /watch?=xxx&list=xxx URLs will now be parsed as playlists
  • A command has been added allowing you to remove a song from a position in queue
  • The readme has been updated
  • Autoplaylists are handled internally on a per-server basis reading from the same file
  • Karaoke mode has been added
  • An experimental version of equalization has been added to the bot, must be enabled in config
  • Users can now be mentioned when using perms command to get their perms
  • A command has been added allowing you to force the bot to leave a server
  • The bot will now correctly pause itself in a number of circumstances with autopause enabled
  • A whitelist has been added for yt-dl extractors/services in the perms file
  • A progress bar has been added to the np command


December 30, 2017 minor

This is a small update to address some issues.


  • Prevent user from bypassing limits using a race condition by spamming the play command (#1172)
  • Fix an issue where using setavatar with no parameters would result in an unhelpful error (#1041)
  • Attempt to stream text/html content-types when using the play command (#1030)
  • Added explicit type parameter for change_presence calls (#1360)
  • Fix an issue where forward slashes when using the play command would return nothing (#649 #757)
  • Fix an issue where the skip ratio was not being implemented correctly (#979 #1012)
  • README now links to the correct places (#946)
  • A typo in the SaveVideos config option explanation has been fixed (#1430)


  • The autoplaylist will now play through each song once before starting again, as opposed to picking randomly from the list. This should resolve issues with it playing the same song regularly (#964)
  • The binaries for ffmpeg have been updated to version 20171229-0c78b6a
  • The README has been reworded and updated
  • The search command now uses reactions to navigate between results
  • The bot no longer supports authenticating via an email/pass login flow. You should create an actual bot application instead, using the bot scope, and provide the bot user’s token in the config file. Our FAQ provides steps for this.
  • The message printed when connected to Discord displaying the bot’s version is instead printed before the connection to Discord for the purpose of future troubleshooting.


  • New save command which will save the current song to the autoplaylist (#215 #88 #1196 #1010 #615)
  • The bot can now have a custom “now playing” status using the StatusMessage config option
  • Added a new sanity check (see below).
  • Some files for GitHub (e.g contribution guidelines and issue templates) have been added for consistency.
  • The bot’s version should be printed as the command window title on some systems (e.g Windows).

This version, and future versions of the bot, will require you to use Git to install the bot. This has been done so that people can’t download the ZIP file and then complain when the bot doesn’t work, or when people say that they followed a YouTube tutorial which is outdated by like a year. Our official guides go through the steps of installing Git, and if you don’t bother following them, we’re not going to help you.

Trust me, using Git is a lot better idea than downloading a ZIP, as easy as it sounds, because otherwise your process of updating the bot will be made much harder and long-winded. If you’ve already installed the bot properly, great! You can update easily by looking at this page.


November 29, 2017 major

This is a courtesy release to merge commits from the review branch into master that have been on that branch for a long time. There are a lot of things that have changed code-wise, but the end user functionality generally remains the same.

Notable changes

For a definitive list of changes, view the commits.

  • Support for streaming (!stream) has been added, but may be buggy - use at your own risk
  • The bot allows Python 3.6 and later versions to run it - not guaranteed to work
  • A lot of code has been cleaned up and/or rewritten
  • Additional sanity checks have been added
  • The bot now uses the logging module rather than printing to stdout normally, also uses colorlog
  • Voice code has been improved
  • Autopausing has been improved
  • Dev commands have been added, dev IDs can be added in config
  • Fixed several issues, including one when trying to run the bot using recent versions


With this release, a LICENSE file has been added to the repo. While we’ve always stated that this bot as being under the MIT license, we’ve now made this known properly.

Please avoid downloading the ZIP of this release unless absolutely necessary. Follow the guides on the wiki to learn how to install the bot instead, or if you’ve already installed it, update the bot.


June 29, 2016 minor

Small update to address a few issues. I was going to release this with the next major update but i’m going to push this much now to fix a few things.


  • Fixed requirements.txt entries (, cffi)
  • The restart loop now only happens after a certain point during the bot startup sequence
  • Updated comments in example configs


  • If the bot is a Bot account, it will display the invite url in the console if the bot is not in any servers on startup
  • Songs can now be skipped by whomever queued them.


June 13, 2016 minor

Assorted fixes and minor updates and such.


  • Fixed channel id resolving on startup
  • Fixed voice channel not updating internally when the bot is moved
  • Fixed error introduced by update
  • Fixed docker thing maybe?


  • The joinserver command now generates the oauth url required to invite the bot if the bot is on a bot account
  • The update_deps script now requests admin to run
  • The opus dlls have been removed since they now come with
  • Errors are printed in a few more situations
  • Updated various comments