mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-06 03:08:55 -05:00
parent
9a278213bd
commit
8e3a76186b
2
changelog.d/mod/3523.bugfix.rst
Normal file
2
changelog.d/mod/3523.bugfix.rst
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Allow mentions in hackban and ban commands.
|
||||||
|
Have the correct lower bound on length of a snowflake for the converter.
|
||||||
@ -1,16 +1,20 @@
|
|||||||
|
import re
|
||||||
from redbot.core.commands import Converter, BadArgument
|
from redbot.core.commands import Converter, BadArgument
|
||||||
from redbot.core.i18n import Translator
|
from redbot.core.i18n import Translator
|
||||||
|
|
||||||
_ = Translator("Mod", __file__)
|
_ = Translator("Mod", __file__)
|
||||||
|
|
||||||
|
_id_regex = re.compile(r"([0-9]{15,21})$")
|
||||||
|
_mention_regex = re.compile(r"<@!?([0-9]{15,21})>$")
|
||||||
|
|
||||||
|
|
||||||
class RawUserIds(Converter):
|
class RawUserIds(Converter):
|
||||||
async def convert(self, ctx, argument):
|
async def convert(self, ctx, argument):
|
||||||
# This is for the hackban command, where we receive IDs that
|
# This is for the hackban and unban commands, where we receive IDs that
|
||||||
# are most likely not in the guild.
|
# are most likely not in the guild.
|
||||||
# As long as it's numeric and long enough, it makes a good candidate
|
# Mentions are supported, but most likely won't ever be in cache.
|
||||||
# to attempt a ban on
|
|
||||||
if argument.isnumeric() and len(argument) >= 17:
|
if match := _id_regex.match(argument) or _mention_regex.match(argument):
|
||||||
return int(argument)
|
return int(match.group(1))
|
||||||
|
|
||||||
raise BadArgument(_("{} doesn't look like a valid user ID.").format(argument))
|
raise BadArgument(_("{} doesn't look like a valid user ID.").format(argument))
|
||||||
|
|||||||
@ -581,7 +581,7 @@ class KickBanMixin(MixinMeta):
|
|||||||
@commands.guild_only()
|
@commands.guild_only()
|
||||||
@commands.bot_has_permissions(ban_members=True)
|
@commands.bot_has_permissions(ban_members=True)
|
||||||
@checks.admin_or_permissions(ban_members=True)
|
@checks.admin_or_permissions(ban_members=True)
|
||||||
async def unban(self, ctx: commands.Context, user_id: int, *, reason: str = None):
|
async def unban(self, ctx: commands.Context, user_id: RawUserIds, *, reason: str = None):
|
||||||
"""Unban a user from this server.
|
"""Unban a user from this server.
|
||||||
|
|
||||||
Requires specifying the target user's ID. To find this, you may either:
|
Requires specifying the target user's ID. To find this, you may either:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user