Redbot 3.2.3 (2020-01-17)¶
Core Bot Changes¶
- Further improvements have been made to bot startup and shutdown.
- Prefixes are now cached for performance.
- Added the means for cog creators to use a global preinvoke hook.
- The bot now ensures it has at least the bare neccessary permissions before running commands.
- Deleting instances works as intended again.
- Sinbad stopped fighting it and embraced the entrypoint madness.
Core Commands¶
- The servers command now also shows the ids.
Admin Cog¶
- The selfrole command now has reasonable expectations about hierarchy.
Help Formatter¶
[botname]
is now replaced with the bot’s display name in help text.- New features added for cog creators to further customize help behavior.
- Check out our command reference for details on new
format_help_for_context
method.
- Check out our command reference for details on new
- Embed settings are now consistent.
Downloader¶
- Improved a few user facing messages.
- Added pagination of output on cog update.
- Added logging of failures.
Docs¶
There’s more detail to the below changes, so go read the docs. For some reason, documenting documentation changes is hard.
- Added instructions about git version.
- Clarified instructions for installation and update.
- Added more details to the API key reference.
- Fixed some typos and versioning mistakes.
Audio¶
Draper did things.
- No seriously, Draper did things.
- Wait you wanted details? Ok, I guess we can share those.
- Audio properly disconnects with autodisconnect, even if notify is being used.
- Symbolic links now work as intended for local tracks.
- Bump play now shows the correct time till next track.
- Multiple user facing messages have been made more correct.
Redbot 3.2.1 (2020-01-10)¶
Hotfixes¶
- Fix Mongo conversion from being incorrectly blocked
- Fix announcer not creating a message for success feedback
- Log an error with creating case types rather than crash
Redbot 3.2.0 (2020-01-09)¶
Core Bot Changes¶
Breaking Changes¶
Modlog casetypes no longer have an attribute for auditlog action type. (#2897)
Removed
redbot.core.modlog.get_next_case_number()
. (#2908)Removed
bank.MAX_BALANCE
, usebank.get_max_balance()
from now on. (#2926)The main bot config is no longer directly accessible to cogs. New methods have been added for use where this is concerned. New methods for this include
bot.get_shared_api_tokens
bot.set_shared_api_tokens
bot.get_embed_color
bot.get_embed_colour
bot.get_admin_roles
bot.get_admin_role_ids
bot.get_mod_roles
bot.get_mod_role_ids
(#2967)
Reserved some command names for internal Red use. These are available programatically as
redbot.core.commands.RESERVED_COMMAND_NAMES
. (#2973)Removed
bot._counter
, Made a few more attrs private (cog_mgr
,main_dir
). (#2976)Extension’s
setup()
function should no longer assume that we are, or even will be connected to Discord. This also means that cog creators should no longer usebot.wait_until_ready()
inside it. (#3073)Removed the mongo driver. (#3099)
Bug Fixes¶
- Help now properly hides disabled commands. (#2863)
- Fixed
bot.remove_command
throwing an error when trying to remove a non-existent command. (#2888) Command.can_see
now works as intended for disabled commands. (#2892)- Modlog entries now show up properly without the mod cog loaded. (#2897)
- Fixed an error in
[p]reason
when setting the reason for a case without a moderator. (#2908) - Bank functions now check the recipient balance before transferring and stop the transfer if the recipient’s balance will go above the maximum allowed balance. (#2923)
- Removed potential for additional bad API calls per ban/unban. (#2945)
- The
[p]invite
command no longer errors when a user has the bot blocked or DMs disabled in the server. (#2948) - Stopped using the
:
character in backup’s filename - Windows doesn’t accept it. (#2954) redbot-setup delete
no longer errors with “unexpected keyword argument”. (#2955)redbot-setup delete
no longer prompts about backup when the user passes the option--no-prompt
. (#2956)- Cleaned up the
[p]inviteset public
and[p]inviteset perms
help strings. (#2963) `[p]embedset user
now only affects DM’s. (#2966)- Fixed an unfriendly error when the provided instance name doesn’t exist. (#2968)
- Fixed the help text and response of
[p]set usebotcolor
to accurately reflect what the command is doing. (#2974) - Red no longer types infinitely when a command with a cooldown is called within the last second of a cooldown. (#2985)
- Removed f-string usage in the launcher to prevent our error handling from causing an error. (#3002)
- Fixed
MessagePredicate.greater
andMessagePredicate.less
allowing any valid int instead of only valid ints/floats that are greater/less than the given value. (#3004) - Fixed an error in
[p]uptime
when the uptime is under a second. (#3009) - Added quotation marks to the response of
[p]helpset tagline
so that two consecutive full stops do not appear. (#3010) - Fixed an issue with clearing rules in permissions. (#3014)
- Lavalink will now be restarted after an unexpected shutdown. (#3033)
- Added a 3rd-party lib folder to
sys.path
before loading cogs. This prevents issues with 3rd-party cogs failing to load when Downloader is not loaded to install requirements. (#3036) - Escaped track descriptions so that they do not break markdown. (#3047)
- Red will now properly send a message when the invoked command is guild-only. (#3057)
- Arguments
--co-owner
and--load-cogs
now properly require at least one argument to be passed. (#3060) - Now always appends the 3rd-party lib folder to the end of
sys.path
to avoid shadowing Red’s dependencies. (#3062) - Fixed
is_automod_immune
’s handling of the guild check and added support for checking webhooks. (#3100) - Fixed the generation of the
repos.json
file in the backup process. (#3114) - Fixed an issue where calling audio commands when not in a voice channel could result in a crash. (#3120)
- Added handling for invalid folder names in the data path gracefully in
redbot-setup
andredbot --edit
. (#3171) --owner
and-p
cli flags now work when added from launcher. (#3174)- Red will now prevent users from locking themselves out with localblacklist. (#3207)
- Fixed help ending up a little too large for discord embed limits. (#3208)
- Fixed formatting issues in commands that list whitelisted/blacklisted users/roles when the list is empty. (#3219)
- Red will now prevent users from locking the guild owner out with localblacklist (unless the command caller is bot owner). (#3221)
- Guild owners are no longer affected by the local whitelist and blacklist. (#3221)
- Fixed an attribute error that can be raised in
humanize_timedelta
ifseconds = 0
. (#3231) - Fixed
ctx.clean_prefix
issues resulting from undocumented changes from discord. (#3249) redbot.core.bot.Bot.owner_id
is now set in the post connection startup. (#3273)redbot.core.bot.Bot.send_to_owners()
andredbot.core.bot.Bot.get_owner_notification_destinations()
now wait until Red is done with post connection startup to ensure owner ID is available. (#3273)
Enhancements¶
- Added the option to modify the RPC port with the
--rpc-port
flag. (#2429) - Slots now has a 62.5% expected payout and will not inflate economy when spammed. (#2875)
- Allowed passing
cls
in theredbot.core.commands.group()
decorator. (#2881) - Red’s Help Formatter is now considered to have a stable API. (#2892)
- Modlog no longer generates cases without being told to for actions the bot did. (#2897)
- Some generic modlog casetypes are now pre-registered for cog creator use. (#2897)
- ModLog is now much faster at creating cases, especially in large servers. (#2908)
- JSON config files are now stored without indentation, this is to reduce the file size and increase the performance of write operations. (#2921)
--[no-]backup
,--[no-]drop-db
and--[no-]remove-datapath
in theredbot-setup delete
command are now on/off flags. (#2958)- The confirmation prompts in
redbot-setup
now have default values for user convenience. (#2958) redbot-setup delete
now has the option to leave Red’s data untouched on database backends. (#2962)- Red now takes less time to fetch cases, unban members, and list warnings. (#2964)
- Red now handles more things prior to connecting to discord to reduce issues during the initial load. (#3045)
bot.send_filtered
now returns the message that is sent. (#3052)- Red will now send a message when the invoked command is DM-only. (#3057)
- All
y/n
confirmations in cli commands are now unified. (#3060) - Changed
[p]info
to say “This bot is an…” instead of “This is an…” for clarity. (#3121) redbot-setup
will now use the instance name in default data paths to avoid creating a second instance with the same data path. (#3171)- Instance names can now only include characters A-z, numbers, underscores, and hyphens. Old instances are unaffected by this change. (#3171)
- Clarified that
[p]backup
saves the bot’s data in the help text. (#3172) - Added
redbot --debuginfo
flag which shows useful information for debugging. (#3183) - Added the Python executable field to
[p]debuginfo
. (#3184) - When Red prompts for a token, it will now print a link to the guide explaining how to obtain a token. (#3204)
redbot-setup
will no longer log to disk. (#3269)redbot.core.bot.Bot.send_to_owners()
andredbot.core.bot.Bot.get_owner_notification_destinations()
now log when they are not able to find the owner notification destination. (#3273)- The lib folder is now cleared on minor Python version changes.
[p]cog reinstallreqs
in Downloader can be used to regenerate the lib folder for a new Python version. (#3274) - If Red detects operating system or architecture change, it will now warn the owner about possible problems with the lib folder. (#3274)
[p]playlist download
will now compress playlists larger than the server attachment limit and attempt to send that. (#3279)
New Features¶
Added functions to acquire locks on Config groups and values. These locks are acquired by default when calling a value as a context manager. See
Value.get_lock
for details. (#2654)Added a config driver for PostgreSQL. (#2723)
Added methods to Config for accessing things by id without mocked objects
Config.guild_from_id
Config.user_from_id
Config.role_from_id
Config.channel_from_id
Config.member_from_ids
- This one requires multiple ids, one for the guild, one for the user - Consequence of discord’s object model (#2804)
New method
humanize_number
inredbot.core.utils.chat_formatting
to convert numbers into text that respects the current locale. (#2836)Added new commands to Economy
[p]bank prune user
- This will delete a user’s bank account.[p]bank prune local
- This will prune the bank of accounts for users who are no longer in the server.[p]bank prune global
- This will prune the global bank of accounts for users who do not share any servers with the bot. (#2845)
Red now uses towncrier for changelog generation. (#2872)
Added
redbot.core.modlog.get_latest_case
to fetch the case object for the most recent ModLog case. (#2908)Added
[p]bankset maxbal
to set the maximum bank balance. (#2926)Added a few methods and classes replacing direct config access (which is no longer supported)
redbot.core.Red.allowed_by_whitelist_blacklist
redbot.core.Red.get_valid_prefixes
redbot.core.Red.clear_shared_api_tokens
redbot.core.commands.help.HelpSettings
(#2976)
Added the cli flag
redbot --edit
which is used to edit the instance name, token, owner, and datapath. (#3060)Added
[p]licenseinfo
. (#3090)Ensured that people can migrate from MongoDB. (#3108)
Added a command to list disabled commands globally or per guild. (#3118)
New event
on_red_api_tokens_update
is now dispatched when shared api keys for a service are updated. (#3134)Added
redbot-setup backup
. (#3235)Added the method
redbot.core.bot.Bot.wait_until_red_ready()
that waits until Red’s post connection startup is done. (#3273)
Removals¶
[p]set owner
and[p]set token
have been removed in favor of managing server side. (#2928)- Shared libraries are marked for removal in Red 3.4. (#3106)
- Removed
[p]backup
. Use the cli commandredbot-setup backup
instead. (#3235) - Removed the functions
safe_delete
,fuzzy_command_search
,format_fuzzy_results
andcreate_backup
fromredbot.core.utils
. (#3240) - Removed a lot of the launcher’s handled behavior. (#3289)
Miscellaneous changes¶
- #2527, #2571, #2723, #2836, #2849, #2861, #2885, #2890, #2897, #2904, #2924, #2939, #2940, #2941, #2949, #2953, #2964, #2986, #2993, #2997, #3008, #3017, #3048, #3059, #3080, #3089, #3104, #3106, #3129, #3152, #3160, #3168, #3173, #3176, #3186, #3192, #3193, #3195, #3202, #3214, #3223, #3229, #3245, #3247, #3248, #3250, #3254, #3255, #3256, #3258, #3261, #3275, #3276, #3293, #3278, #3285, #3296,
Dependency changes¶
Documentation Changes¶
- Started the user guides covering cogs and the user interface of the bot. This includes, for now, a “Getting started” guide. (#1734)
- Added documentation for PM2 support. (#2105)
- Updated linux install docs, adding sections for Fedora Linux, Debian/Raspbian Buster, and openSUSE. (#2558)
- Created documentation covering what we consider a developer facing breaking change and the guarantees regarding them. (#2882)
- Fixed the user parameter being labeled as
discord.TextChannel
instead ofdiscord.abc.User
inredbot.core.utils.predicates
. (#2914) - Updated towncrier info in the contribution guidelines to explain how to create a changelog for a standalone PR. (#2915)
- Reworded the virtual environment guide to make it sound less scary. (#2920)
- Driver docs no longer show twice. (#2972)
- Added more information about
redbot.core.utils.humanize_timedelta
into the docs. (#2986) - Added a direct link to the “Installing Red” section in “Installing using powershell and chocolatey”. (#2995)
- Updated Git PATH install (Windows), capitalized some words, stopped mentioning the launcher. (#2998)
- Added autostart documentation for Red users who installed Red inside of a virtual environment. (#3005)
- Updated the Cog Creation guide with a note regarding the Develop version as well as the folder layout for local cogs. (#3021)
- Added links to the getting started guide at the end of installation guides. (#3025)
- Added proper docstrings to enums that show in drivers docs. (#3035)
- Discord.py doc links will now always use the docs for the currently used version of discord.py. (#3053)
- Added
|DPY_VERSION|
substitution that will automatically get replaced by the current discord.py version. (#3053) - Added missing descriptions for function returns. (#3054)
- Stopped overwriting the
docs/prolog.txt
file inconf.py
. (#3082) - Fixed some typos and wording, added MS Azure to the host list. (#3083)
- Updated the docs footer copyright to 2019. (#3105)
- Added a deprecation note about shared libraries in the Downloader Framework docs. (#3106)
- Updated the apikey framework documentation. Changed
bot.get_shared_api_keys()
tobot.get_shared_api_tokens()
. (#3110) - Added information about
info.json
’smin_python_version
key in Downloader Framework docs. (#3124) - Added an event reference for the
on_red_api_tokens_update
event in the Shared API Keys docs. (#3134) - Added notes explaining the best practices with config. (#3149)
- Documented additional attributes in Context. (#3151)
- Updated Windows docs with up to date dependency instructions. (#3188)
- Added a “Publishing cogs for V3” document explaining how to make user’s cogs work with Downloader. (#3234)
- Fixed broken docs for
redbot.core.commands.Context.react_quietly
. (#3257) - Updated copyright notices on License and RTD config to 2020. (#3259)
- Added a line about setuptools and wheel. (#3262)
- Ensured development builds are not advertised to the wrong audience. (#3292)
- Clarified the usage intent of some of the chat formatting functions. (#3292)
Admin¶
Breaking Changes¶
Bug Fixes¶
- Fixed
[p]announce
failing after encountering an error attempting to message the bot owner. (#3166) - Improved the clarity of user facing messages when the user is not allowed to do something due to Discord hierarchy rules. (#3250)
- Fixed some role managing commands not properly checking if Red had
manage_roles
perms before attempting to manage roles. (#3250) - Fixed
[p]editrole
commands not checking if roles to be edited are higher than Red’s highest role before trying to edit them. (#3250) - Fixed
[p]announce ignore
and[p]announce channel
not being able to be used by guild owners and administrators. (#3250)
Audio¶
Bug Fixes¶
[p]playlist remove
now removes the playlist url if the playlist was created through[p]playlist save
. (#2861)- Users are no longer able to accidentally overwrite existing playlist if a new one with the same name is created/renamed. (#2861)
[p]audioset settings
no longer shows lavalink JAR version. (#2904)- Fixed a
KeyError: loadType
when trying to play tracks. (#2904) [p]audioset settings
now usesctx.is_owner()
to check if the context author is the bot owner. (#2904)- Fixed track indexs being off by 1 in
[p]search
. (#2940) - Fixed an issue where updating your Spotify and YouTube Data API tokens did not refresh them. (#3047)
- Fixed an issue where the blacklist was not being applied correctly. (#3047)
- Fixed an issue in
[p]audioset restrictions blacklist list
where it would call the list aWhitelist
. (#3047) - Red’s status is now properly cleared on emptydisconnect. (#3050)
- Fixed a console spam caused sometimes when auto disconnect and auto pause are used. (#3123)
- Fixed an error that was thrown when running
[p]audioset dj
. (#3165) - Fixed a crash that could happen when the bot can’t connect to the lavalink node. (#3238)
- Restricted the number of songs shown in the queue to first 500 to avoid heartbeats. (#3279)
- Added more cooldowns to playlist commands and restricted the queue and playlists to 10k songs to avoid bot errors. (#3286)
Enhancements¶
[p]playlist upload
will now load playlists generated via[p]playlist download
much faster if the playlist uses the new scheme. (#2861)[p]playlist
commands now can be used by everyone regardless of DJ settings, however it will respect DJ settings when creating/modifying playlists in the server scope. (#2861)Spotify, Youtube Data, and Lavalink API calls can be cached to avoid repeated calls in the future, see
[p]audioset cache
. (#2890)Playlists will now start playing as soon as first track is loaded. (#2890)
[p]audioset localpath
can set a path anywhere in your machine now. Note: This path needs to be visible byLavalink.jar
. (#2904)[p]queue
now works when there are no tracks in the queue, showing the track currently playing. (#2904)[p]audioset settings
now reports Red Lavalink version. (#2904)Adding and removing reactions in Audio is no longer a blocking action. (#2904)
When shuffle is on, queue now shows the correct play order. (#2904)
[p]seek
and[p]skip
can be used by user if they are the song requester while DJ mode is enabled and votes are disabled. (#2904)Adding a playlist and an album to a saved playlist skips tracks already in the playlist. (#2904)
DJ mode is now turned off if the DJ role is deleted. (#2904)
When playing a localtrack,
[p]play
and[p]bumpplay
no longer require the use of the prefix “localtracks".Before:
[p]bumpplay localtracks\\ENM\\501 - Inside The Machine.mp3
Now:[p]bumpplay ENM\\501 - Inside The Machine.mp3
Now nested folders:[p]bumpplay Parent Folder\\Nested Folder\\track.mp3
(#2904)Removed commas in explanations about how to set API keys. (#2905)
Expanded local track support to all file formats (m3u, m4a, mp4, etc). (#2940)
Cooldowns are now reset upon failure of commands that have a cooldown timer. (#2940)
Improved the explanation in the help string for
[p]audioset emptydisconnect
. (#3051)Added a typing indicator to playlist dedupe. (#3058)
Exposed clearer errors to users in the play commands. (#3085)
Better error handling when the player is unable to play multiple tracks in the sequence. (#3165)
New Features¶
Added support for nested folders in the localtrack folder. (#270)
Now auto pauses the queue when the voice channel is empty. (#721)
All Playlist commands now accept optional arguments, use
[p]help playlist <subcommand>
for more details. (#2861)[p]playlist rename
will now allow users to rename existing playlists. (#2861)[p]playlist update
will now allow users to update non-custom Playlists to the latest available tracks. (#2861)There are now 3 different scopes of playlist. To define them, use the
--scope
argument.Global Playlist
- These playlists will be available in all servers the bot is in.
- These can be managed by the Bot Owner only.
Server Playlist
- These playlists will only be available in the server they were created in.
- These can be managed by the Bot Owner, Guild Owner, Mods, Admins, DJs, and the Creator (if the DJ role is disabled).
User Playlist
- These playlists will be available in all servers both the bot and the creator are in.
- These can be managed by the Bot Owner and Creator only. (#2861)
[p]audioset cache
can be used to set the cache level. It’s off by default. (#2904)[p]genre
can be used to play spotify playlists. (#2904)[p]audioset cacheage
can be used to set the maximum age of an entry in the cache. Default is 365 days. (#2904)[p]audioset autoplay
can be used to enable auto play once the queue runs out. (#2904)New events dispatched by Audio.
on_red_audio_track_start(guild: discord.Guild, track: lavalink.Track, requester: discord.Member)
on_red_audio_track_end(guild: discord.Guild, track: lavalink.Track, requester: discord.Member)
on_red_audio_track_enqueue(guild: discord.Guild, track: lavalink.Track, requester: discord.Member)
on_red_audio_track_auto_play(guild: discord.Guild, track: lavalink.Track, requester: discord.Member)
on_red_audio_queue_end(guild: discord.Guild, track: lavalink.Track, requester: discord.Member)
on_red_audio_audio_disconnect(guild: discord.Guild)
on_red_audio_skip_track(guild: discord.Guild, track: lavalink.Track, requester: discord.Member)
(#2904)
[p]queue shuffle
can be used to shuffle the queue manually. (#2904)[p]queue clean self
can be used to remove all songs you requested from the queue. (#2904)[p]audioset restrictions
can be used to add or remove keywords which songs must have or are not allowed to have. (#2904)[p]playlist dedupe
can be used to remove duplicated tracks from a playlist. (#2904)[p]autoplay
can be used to play a random song. (#2904)[p]bumpplay
can be used to add a song to the front of the queue. (#2940)[p]shuffle
has an additional argument to tell the bot whether it should shuffle bumped tracks. (#2940)Added global whitelist/blacklist commands. (#3047)
Added self-managed daily playlists in the GUILD scope, these are called “Daily playlist - YYYY-MM-DD” and auto delete after 7 days. (#3199)
CustomCom¶
Downloader¶
Bug Fixes¶
- Made the regex for repo names use raw strings to stop causing a
DeprecationWarning
for invalid escape sequences. (#2571) - Downloader will no longer attempt to install cogs that are already installed. (#2571)
- Repo names can now only contain the characters listed in the help text (A-Z, 0-9, underscores, and hyphens). (#2827)
[p]findcog
no longer attempts to find a cog for commands without a cog. (#2902)- Downloader will no longer attempt to install a cog with same name as another cog that is already installed. (#2927)
- Added error handling for when a remote repository or branch is deleted, now notifies the which repository failed and continues to update the others. (#2936)
[p]cog install
will no longer error if a cog has an empty install message. (#3024)- Made
redbot.cogs.downloader.repo_manager.Repo.clean_url
work with relative urls. This property isstr
type now. (#3141) - Fixed an error on repo add from empty string values for the
install_msg
info.json field. (#3153) - Disabled all git auth prompts when adding/updating a repo with Downloader. (#3159)
[p]findcog
now properly works for cogs with less typical folder structure. (#3177)[p]cog uninstall
now fully unloads cog - the bot will not try to load it on next startup. (#3179)
Enhancements¶
- Downloader will now check if the Python and bot versions match requirements in
info.json
during update. (#1866) [p]cog install
now accepts multiple cog names. (#2527)- When passing cogs to
[p]cog update
, it will now only update those cogs, not all cogs from the repo those cogs are from. (#2527) - Added error messages for failures when installing/reinstalling requirements and copying cogs and shared libraries. (#2571)
[p]findcog
now uses sanitized urls (without HTTP Basic Auth fragments). (#3129)[p]repo info
will now show the repo’s url, branch, and authors. (#3225)[p]cog info
will now show cog authors. (#3225)[p]findcog
will now show the repo’s branch. (#3225)
New Features¶
- Added
[p]repo update [repos]
which updates repos without updating the cogs from them. (#2527) - Added
[p]cog installversion <repo_name> <revision> <cogs>
which installs cogs from a specified revision (commit, tag) of the given repo. When using this command, the cog will automatically be pinned. (#2527) - Added
[p]cog pin <cogs>
and[p]cog unpin <cogs>
for pinning cogs. Cogs that are pinned will not be updated when using update commands. (#2527) - Added
[p]cog checkforupdates
that lists which cogs can be updated (including pinned cog) without updating them. (#2527) - Added
[p]cog updateallfromrepos <repos>
that updates all cogs from the given repos. (#2527) - Added
[p]cog updatetoversion <repo_name> <revision> [cogs]
that updates all cogs or ones of user’s choosing to chosen revision of the given repo. (#2527) - Added
[p]cog reinstallreqs
that reinstalls cog requirements and shared libraries for all installed cogs. (#3167)
Image¶
Permissions¶
Trivia¶
Bug Fixes¶
- Fixed a typo in Ahsoka Tano’s name in the Starwars trivia list. (#2909)
- Fixed a bug where
[p]trivia leaderboard
failed to run. (#2911) - Fixed a typo in the Greek mythology trivia list regarding Hermes’ staff. (#2994)
- Fixed a question in the Overwatch trivia list that accepted blank responses. (#2996)
- Fixed questions and answers that were incorrect in the Clash Royale trivia list. (#3236)