[x] I have tested my changes against the dev branch (the latest developmental version), and this pull request is targeting that branch as a base
[x] I have tested my changes on Python 3.8 or higher
[x] I have ensured my code is formatted using Black
Description
This PR contains all the implementations for any groundwork in the previous three PRs.
Here is a list of features this PR should contain or make usable:
Adds logic to check for updates to MusicBot via git and for dependencies via pip.
Adds new command checkupdates to print status about available updates.
Improved security of subprocess command execution, to reduce command/shell injection risks.
Updates blocklist feature and adds block list for songs as well as users.
Replaces old blacklist command with blockuser command.
Adds new command blocksong which works similarly to blockuser command.
Updates options.ini to replace or add block list options:
Replaces [Files] Blacklist with [Files] UserBlocklistFile option.
Adds [Files] SongBlocklistFile option.
Adds [MusicBot] EnableUserBlocklist to toggle the features. Default enabled.
Adds [MusicBot] EnableSongBlocklist to toggle the features. Default disabled.
Adds playnow command to immediately play a track and move currently playing songs to the end of the queue.
Auto playlist tracks are auto-skipped when a user adds a new song.
Update the queue command to add pagination by both command arg and reactions.
Allow listids and perms commands to fall back to sending in public if DM fails.
Majority of function definitions now have some kind of doc string.
Enforce code checks using Pylint and isort to reduce inconsistency and clean up code.
Ensure source code complies with mypy checks, and fix various bugs on the way.
Updates MusicBot logging to enable time-based log files and safely close the logs in most cases.
Fixes possible issues with counting members in channel not respecting bot exceptions.
Updates ConfigParser to provide extra parser methods rather than relying on validation later.
Updates Permissions to also use extended ConfigParser methods, for consistency.
Refactored the decorator methods to live in utils.py or be removed.
Related issues (if applicable)
Following this PR, and a little testing, these issues could be closed:
dev
branch (the latest developmental version), and this pull request is targeting that branch as a baseDescription
This PR contains all the implementations for any groundwork in the previous three PRs.
Here is a list of features this PR should contain or make usable:
checkupdates
to print status about available updates.blacklist
command withblockuser
command.blocksong
which works similarly toblockuser
command.[Files] Blacklist
with[Files] UserBlocklistFile
option.[Files] SongBlocklistFile
option.[MusicBot] EnableUserBlocklist
to toggle the features. Default enabled.[MusicBot] EnableSongBlocklist
to toggle the features. Default disabled.playnow
command to immediately play a track and move currently playing songs to the end of the queue.queue
command to add pagination by both command arg and reactions.listids
andperms
commands to fall back to sending in public if DM fails.Pylint
andisort
to reduce inconsistency and clean up code.Related issues (if applicable)
Following this PR, and a little testing, these issues could be closed:
2376 #2375 #2340 #2238 #1829 #1587 #1462 #520 #249 and #69