Fix @commands.can_manage_channel
always passing
#6398
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description of the changes
Red-DiscordBot/redbot/core/commands/requires.py
Lines 791 to 806 in ad1e1aa
@commands.can_manage_channel
passes thebool
valueallow_thread_owner
as the first parameter to_can_manage_channel_deco
Red-DiscordBot/redbot/core/commands/requires.py
Lines 763 to 778 in ad1e1aa
_can_manage_channel_deco
expects the first parameter to be aPrivilegeLevel
. When abool
is passed instead, the eventual comparison results inif await PrivilegeLevel.from_ctx(ctx) >= <bool>
.Red-DiscordBot/redbot/core/commands/requires.py
Lines 97 to 117 in ad1e1aa
Since
enum.auto
increments starting from1
, andbool
s are interpreted as an int of0
or1
, thePrivilegeLevel
requirement is always passed. As a result, this check always passes, regardless of the channel state or the permissions of the invoker. This is not the case for all other checks that use the_can_manage_channel_deco
helper, as those checks explicitly pass aPrivilegeLevel
.Have the changes in this PR been tested?
Yes