For extremely large servers (tens of thousands of members), copying the Server object can take several seconds and peg the CPU since this is a necessarily blocking operation
* Add error handling and user feedback to Audio cog
* Remove verbose
* Maybe? fix the OSError
* Replace is with isinstance()
* Attempt to force UTF-8 encoding
* Fix unbound variable
* Escape mass mentions on error output
Twitch API v5 makes use of IDs instead of usernames.
To migrate the current data, the cog will attempt to fetch and save all the missing stream IDs on loading (in chunks of 100)
Moved blacklist / whitelist functions to owner cog
Moved [p]modset adminrole / modrole to [p]set command group
Check mod/admin users against blacklist / whitelist:
Users with (server or global) admin or mod role used to be able to skip the whitelist / blacklist checks. This doesn't really make sense from a design pov since these are global checks and the commands are owner only.
[p]set adminrole/modrole: check that the role actually exists before adding it
Added [p]blacklist/whitelist list, to show the members of each list
Further cleaned up the code
Added a toggleable setting for answer reveal on timeout
Removed all the try except statements on send_message, discord.py now handles those on its own
Displays settings in a user friendly way
Fixes#668
The exception command sends the last occurred exception to the owner, or even publicly if requested.
The error that used to show up publicly when a command failed has been hidden for security reasons.
All references to "modules" have been changed to "cogs"
Toggleable with [p]modset hierarchy
This enables a role hierarchy check before all moderation actions. If the mod doesn't have a role superior to the user's top role the action will be denied.
Server owner and bot owner are exempt from the check.