mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-06 03:08:55 -05:00
[Core] Prevent users from locking out themselves or guild owner with localblacklist (#3221)
* Update core_commands.py * Update core_commands.py * Create 3207.bugfix.rst * Update core_commands.py * Create 3221.bugfix.rst * Update redbot/core/core_commands.py Co-Authored-By: Michael H <michael@michaelhall.tech> * Update bot.py * Rename 3221.bugfix.rst to 3221.bugfix.1.rst * Create 3221.bugfix.2.rst * Update bot.py Co-authored-by: Michael H <michael@michaelhall.tech>
This commit is contained in:
parent
de229f63fe
commit
aabdabf3bc
1
changelog.d/3207.bugfix.rst
Normal file
1
changelog.d/3207.bugfix.rst
Normal file
@ -0,0 +1 @@
|
|||||||
|
Red will now prevent users from locking themselves out with localblacklist.
|
||||||
1
changelog.d/3221.bugfix.1.rst
Normal file
1
changelog.d/3221.bugfix.1.rst
Normal file
@ -0,0 +1 @@
|
|||||||
|
Red will now prevent users from locking guild owner out with localblacklist (unless the command caller is bot owner).
|
||||||
1
changelog.d/3221.bugfix.2.rst
Normal file
1
changelog.d/3221.bugfix.2.rst
Normal file
@ -0,0 +1 @@
|
|||||||
|
Guild owners are no longer affected by local whitelist and blacklist.
|
||||||
@ -223,6 +223,11 @@ class RedBase(commands.GroupMixin, commands.bot.BotBase, RPCMixin): # pylint: d
|
|||||||
------
|
------
|
||||||
TypeError
|
TypeError
|
||||||
Did not provide ``who`` or ``who_id``
|
Did not provide ``who`` or ``who_id``
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
bool
|
||||||
|
`True` if user is allowed to run things, `False` otherwise
|
||||||
"""
|
"""
|
||||||
# Contributor Note:
|
# Contributor Note:
|
||||||
# All config calls are delayed until needed in this section
|
# All config calls are delayed until needed in this section
|
||||||
@ -254,6 +259,9 @@ class RedBase(commands.GroupMixin, commands.bot.BotBase, RPCMixin): # pylint: d
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
if guild:
|
if guild:
|
||||||
|
if guild.owner_id == who.id:
|
||||||
|
return True
|
||||||
|
|
||||||
# The delayed expansion of ids to check saves time in the DM case.
|
# The delayed expansion of ids to check saves time in the DM case.
|
||||||
# Converting to a set reduces the total lookup time in section
|
# Converting to a set reduces the total lookup time in section
|
||||||
if mocked:
|
if mocked:
|
||||||
|
|||||||
@ -1915,9 +1915,16 @@ class Core(commands.Cog, CoreLogic):
|
|||||||
user_or_role = discord.Object(id=user_or_role)
|
user_or_role = discord.Object(id=user_or_role)
|
||||||
user = True
|
user = True
|
||||||
|
|
||||||
if user and await ctx.bot.is_owner(user_or_role):
|
if user:
|
||||||
await ctx.send(_("You cannot blacklist an owner!"))
|
if user_or_role.id == ctx.author.id:
|
||||||
return
|
await ctx.send(_("You cannot blacklist yourself!"))
|
||||||
|
return
|
||||||
|
if user_or_role.id == ctx.guild.owner_id and not await ctx.bot.is_owner(ctx.author):
|
||||||
|
await ctx.send(_("You cannot blacklist the guild owner!"))
|
||||||
|
return
|
||||||
|
if await ctx.bot.is_owner(user_or_role):
|
||||||
|
await ctx.send(_("You cannot blacklist a bot owner!"))
|
||||||
|
return
|
||||||
|
|
||||||
async with ctx.bot._config.guild(ctx.guild).blacklist() as curr_list:
|
async with ctx.bot._config.guild(ctx.guild).blacklist() as curr_list:
|
||||||
if user_or_role.id not in curr_list:
|
if user_or_role.id not in curr_list:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user