- Fixed cache clearing earlier than expected (thanks @CMahaff).
- Fixed a panic that occurred when certain YouTube playlists were added to the queue.
- Fixed
!move
not working for subchannels (thanks @mkbwong). - Fixed MumbleDJ showing invalid YouTube ID error message in chat when an invalid YouTube API key is supplied (thanks @fiveofeight).
- Fixed MumbleDJ showing invalid YouTube ID error message in chat when a song exceeds the allowed time duration.
- Fixed incorrect values shown in timestamp for videos over an hour long.
- Reworked timestamp parsing.
- Added support for YouTube offsets. This means that YouTube URLs with the
t
parameter will start at the time specified in the URL instead of the beginning. - Cleaned up comments in some files and removed some unnecessary code.
- Fixed a bug in which a duration of 0:00 was shown for songs that were less than a minute long.
- Migrated all YouTube API calls to YouTube Data API v3. This means that you MUST follow the instructions in the following link if you were using a previous version of MumbleDJ: https://github.com/matthieugrieger/mumbledj#youtube-api-keys.
- Made the SongQueue much more flexible. These changes will allow easy addition of support for other music services.
- Fixed a crash that would occur when the last song of a playlist was skipped.
- Fixed a race condition that would sometimes cause the bot to crash (thanks dylanetaft!).
- Renamed
mumbledj.gcfg
toconfig.gcfg
. However, please note that it will still be calledmumbledj.gcfg
in your~/.mumbledj
directory. Hopefully this will avoid any ambiguity when referring to the config files. - Tweaked the
Makefile
to handle situations wherego build
creates an executable with an appended version number.
- Fixed a typo in
mumbledj.gcfg
. - Songs and playlists are now skipped immediately if the submitter submits a skip command.
SONG_SKIPPED_HTML
andPLAYLIST_SKIPPED_HTML
are no longer shown if the submitter or admin skips a song/playlist.
- Added missing AdminSkipPlaylistAlias option to
mumbledj.gcfg
.
- Added automatic connection retries if the bot loses connection to the server. The bot will attempt to reconnect to the server every 30 seconds for a period of 15 minutes, then exit if a connection cannot be made.
- Fixed failed audio downloads for YouTube videos with IDs beginning with "-".
- Added
gumbleutil.CertificateLockFile()
for more secure connections. - Added
-insecure
boolean commandline flag to allow MumbleDJ to connect to a server without overwriting~/.mumbledj/cert.lock
.
- Fixed bot crashing after 5 minutes if there is nothing in the song queue.
- Fixed queue freezing up if the download of the first song in queue fails.
- Added caching system to MumbleDJ.
- Added configuration variables in
mumbledj.gcfg
for caching related settings (please note that caching is off by default). - Added
!numcached
and!cachesize
commands for admins. - Added optional song length limit (thanks jakexks!)
- Updated dependencies and fixed code to match
gumble
API changes. - Greatly simplified the song queue data structure. Some new bugs could potentially have arisen. Let me know if you find any!
- Added configuration option in
mumbledj.gcfg
for default bot comment. - Fixed text messages only containing images crashing the bot.
- Updated
gumble
andgumbleutil
dependencies. - Removed
sanitize
dependency. - Reworked
Makefile
slightly. - Now uses
gumbleutil.PlainText
for removing HTML tags instead ofsanitize
. - Added
!setcomment
which allows admin users to set the comment for the bot. - Made "Now Playing" notification and
!currentsong
show the playlist title of the song if it is included in a playlist. - Added ability to connect to Mumble server using a PEM cert/key pair. Use the commandline flags
cert
andkey
to make use of this. - Added an easier to read error message upon unsuccessful connection to server.
- Made it possible to place MumbleDJ binary in
~/bin
instead of/usr/local/bin
if the folder exists.
- Added panic on audio play fail for debugging purposes.
- Fixed '!' being recognized as '!skipplaylist'.
- Fixed !reset crash when there is no audio playing.
- Fixed newlines after YouTube URL messing up !add commands.
- Fixed empty song/playlist entry being added upon !add with invalid YouTube ID.
- Fixed go build issues.
- Added
goop
dependency management. Make sure you haveopenal
installed, or it won't work right! - Fixed crash on invalid playlist URL.
- Fixed private messages crashing the bot when the target user switches channels or disconnects.
- Fixed !nextsong showing incorrect information about the next song in the queue.
- Added !currentsong command, which displays information about the song currently playing.
- MumbleDJ now removes disconnected users from skiplists for playlists and songs within the SongQueue.
- Fixed crash when a user disconnects when no song is playing.
- Fixed not being able to use the move command with channels with spaces in their name.
- Set AudioEncoder Application to
gopus.Audio
instead ofgopus.Voice
for hopefully better sound quality. - Added some commands to the !help string that were missing.
- Added !nextsong command, which outputs some information about the next song in the queue if it exists.
- Fixed type mismatch error when building MumbleDJ.
- Added traversal function to SongQueue.
- Added !numsongs command, which outputs how many songs are currently in the SongQueue.
- Added !help command, which displays a list of valid commands in Mumble chat.
- Fixed some YouTube playlist URLs crashing the bot and not retrieving metadata correctly.
- Fixed a crash caused by a user trying to skip the same song more than once.
- Fixed a crash caused by entering a skip request when no song is currently playing.
- Attached
gumbleutil.AutoBitrate
EventListener to client. This should hopefully fix the issues with audio cutting in and out. - Moved dependency installation to default
make
command to better enforce new updates. - Added
make build
toMakefile
to allow previous functionality of the defaultmake
command. - Hopefully fixed a situation that would cause the song queue to stop working.
- Added
!reset
command. Use this to reset the song queue.
- Added ability to add YouTube playlists to the queue. Note that the max size of a playlist is 25 songs, anything larger will only use the first 25 songs in the playlist.
- Fixed a crash while attempting to add URLs to the queue.
- Re-made the song queue using my own "queue-like" structure using slices.
- Fixed YouTube URL parsing not working for some forms of YouTube URLs.
- Now recovers more gracefully if an audio download fails. Instead of panicking, the bot will send a message to the user who added the URL, telling them the audio download failed.
- Fixed skip messages not being displayed in chat.
- Reached feature parity with old version of MumbleDJ.
- Bot is now written completely in Golang instead of Lua and Python.
- Now uses
gumble
for interacting with Mumble instead ofpiepan
. - Stability improved in many areas.
- Audio quality is slightly better due to using higher bitrate m4a files instead of Ogg Vorbis.
- All YouTube URLs should be supported now.
- Added an admin skip command that allows an admin to force skip a song.
- Added
mumbledj.gcfg
, where all configuration options are now stored. - Added a reload command, used to reload the configuration when a change is made.
- Implemented volume control. Now changes volume while audio is playing!
- Code is now more thoroughly commented.
- Fixed char comparison with dj.conf.General.CommandPrefix.
- Switched from Ruby to Go, using
gumble
instead ofmumble-ruby
now.
- Created "v2" branch for Ruby rewrite.
- Fixed volume changed message showing wrong value.
- Switched volume change method. The volume is now changed directly through
piepan
instead offfmpeg
. - Fixed another bug with volume changing.
- Fixed a bug that would not allow audio encoding to complete successfully while on Debian.
- Fixed a stupid typo that broke the
!volume
command. - Updated
SETUP.md
with instructions on installing MumbleDJ on Debian. - Added missing commands in
SETUP.md
.
- Fixed a crash when an error occurs during the audio downloading & encoding process.
- Fixed a crash that occurs when the bot tries to join a default channel that does not exist. If the default channel does not exist, the bot will just move itself to the root of the server instead.
- Added
SETUP.md
which contains a guide on how to configure MumbleDJ and install its dependencies. - Deleted song_queue.lua and moved all contents to mumbledj.lua. In the end this will make the script simpler.
- Fixed song skipping.
- Made user skip message show even when the target number of skips has been reached.
- Made "Music" the default Mumble channel.
- Fixed skips not working correctly.
- Fixed a crash related to private messages.
- Removed play and pause commands. There were issues with these commands, and they both serve functions that can be done within Mumble per-user.
- Removed all play and pause configuration options from config.lua.
- Updated .gitignore to ignore .ogg files.
- Forced ffmpeg to use libvorbis codec.
- Bot now seems to be working!
- Skipping songs works now.
- Second audio track now plays directly after the first one.
- Silenced ffmpeg output again.
- Added command alias options to config.
- Moved most of the skip-related code to song_queue.lua.
- Commented more thoroughly the code, mostly pointing out what each function does.
- Made more progress toward a working song queue. It only seems to play the first song in the queue at the moment.
- Removed USERNAME field from config.lua. It wasn't needed and introduced situations that may cause problems.
- Fixed download_audio.py. It now seems to reliably download/encode audio. ffmpeg output has been silenced.
- Volume is now set during encode by ffmpeg, since the volume option in piepan's play() does not seem to work.
- Removed volumeup/volumedown commands, replaced with just volume.
- Added deque.lua (thanks Pierre Chapuis!).
- Added song_queue.lua.
- Made significant progress toward a working song system.
- Added command parsing.
- Added placeholder functions for various commands.
- Added admin, message, and other miscellaneous config options.
- Removed start command.
- Added a permissions/admin system.
- Changed the base for the project from pymumble to piepan.
- Entire codebase is now written in Lua instead of Python.
- Re-implemented some of the config in config.lua.
- Implemented code to connect the bot to the server and move it into the Bot Testing channel.
- Added song.py, a file that houses the Song class.
- Added command & storage options to config.py.
- mumble-music-bot repository renamed to mumbledj.
- Renamed all mentions of mumble-music-bot or musicbot to mumbledj.
- Restructured project for easier imports.
- Added .gitignore for pymumble.
- Now successfully connects to Mumble servers.
- Added command parsing.
- mumble-music-bot repository created.
- Added config.py with some basic configuration options.
- Put placeholder methods within the MusicBot object.
- Add run_bot.py.