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.
1st June 2020
June 01, 2020 major
Here is a summary of changes since the last version by categories, listed in the order of contribution date.
New Features:
- Better audio normalization (contributed by SMarioMan)
- Support for Python 3.8 (contributed by TheerapakG)
- Spotify URI support without the need to supply API credentials (contributed by amit177)
- Allow customizing embed footers (contributed by AutumnClove)
- Automated MusicBot installation on Linux (contributed by AleanaA)
- Automated MusicBot installation on Windows (contributed by TheerapakG)
- Support for Discord’s application teams (contributed by amit177)
Fixes:
- Legacyskip now allows user with no force skip permission to vote, which is more closely to legacy behavior (proposed by TheerapakG, contributed by AutumnClove)
- Fixed a bug that provided nonsense estimated time due to Youtube-DL returning no duration data (contributed by TheerapakG)
- Reduced repetitive Youtube-DL queries when searching (contributed by TheerapakG)
- Disconnecting the bot via Discord now stop the player from playing (contributed by amit177 and AleanaA)
- Remove specific version requirement for discord.py[voice] (contributed by amit177)
- Stops the player on error instead of allowing the bot to break if an error occurs during playback (contributed by TheerapakG)
- Fix parsing for dev IDs in config (contributed by amit177)
Docker:
- Optimize pip caching (contributed by wallopthecat)
- Update the Dockerfile to work with an Alpine linux base image (contributed by kvdheijden)
Translations:
- Italian translation (contributed by malta895)
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.
Changes:
- Add Taiwan (tradiitonal Chinese) translation file
- Change discord.py 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
1.9.8_4
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
1.9.8_3
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
1.9.8_2
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 msg.author.voice 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
1.9.8_1
August 27, 2018 minor
- Fixed typo when processing Spotify playlists
- Added shebangs to run.py and update.py
1.9.8
August 18, 2018 major
discord.py rewrite
Starting from version 1.9.8, MusicBot requires the rewrite version of discord.py. 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
open.spotify.com
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
- discord.py 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
1.9.7
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.
Important:
- Update scripts have been renamed. Use
python update.py
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.
Changes:
- 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
1.9.6_1
December 30, 2017 minor
This is a small update to address some issues.
Fixes
- 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 forchange_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)
Changes
- 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.
Additions
- 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.
1.9.6
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 usescolorlog
- 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 discord.py versions
Notes
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.
1.9.5_2
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.
Fixes
- Fixed
requirements.txt
entries (discord.py, cffi) - The restart loop now only happens after a certain point during the bot startup sequence
- Updated comments in example configs
Additions
- 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.
1.9.5_1
June 13, 2016 minor
Assorted fixes and minor updates and such.
Fixes:
- Fixed channel id resolving on startup
- Fixed voice channel not updating internally when the bot is moved
- Fixed error introduced by discord.py update
- Fixed docker thing maybe?
Changes:
- The
joinserver
command now generates the oauth url required to invite the bot if the bot is on abot
account - The
update_deps
script now requests admin to run - The opus dlls have been removed since they now come with discord.py
- Errors are printed in a few more situations
- Updated various comments