Use Guild.fetch_ban() over Guild.bans() (#5656)

This commit is contained in:
jack1142 2022-04-02 01:44:30 +02:00 committed by GitHub
parent 67e43eb00b
commit d932abad16
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -166,8 +166,11 @@ class KickBanMixin(MixinMeta):
else: else:
tempbans = await self.config.guild(guild).current_tempbans() tempbans = await self.config.guild(guild).current_tempbans()
ban_list = [ban.user.id for ban in await guild.bans()] try:
if user.id in ban_list: await guild.fetch_ban(user)
except discord.NotFound:
pass
else:
if user.id in tempbans: if user.id in tempbans:
async with self.config.guild(guild).current_tempbans() as tempbans: async with self.config.guild(guild).current_tempbans() as tempbans:
tempbans.remove(user.id) tempbans.remove(user.id)
@ -468,17 +471,18 @@ class KickBanMixin(MixinMeta):
tempbans = await self.config.guild(guild).current_tempbans() tempbans = await self.config.guild(guild).current_tempbans()
ban_list = await guild.bans() for user_id in user_ids:
for entry in ban_list: if user_id in tempbans:
for user_id in user_ids: # We need to check if a user is tempbanned here because otherwise they won't be processed later on.
if entry.user.id == user_id: continue
if user_id in tempbans: try:
# We need to check if a user is tempbanned here because otherwise they won't be processed later on. await guild.fetch_ban(discord.Object(user_id))
continue except discord.NotFound:
else: pass
errors[user_id] = _("User with ID {user_id} is already banned.").format( else:
user_id=user_id errors[user_id] = _("User with ID {user_id} is already banned.").format(
) user_id=user_id
)
user_ids = remove_processed(user_ids) user_ids = remove_processed(user_ids)
@ -903,14 +907,13 @@ class KickBanMixin(MixinMeta):
guild = ctx.guild guild = ctx.guild
author = ctx.author author = ctx.author
audit_reason = get_audit_reason(ctx.author, reason, shorten=True) audit_reason = get_audit_reason(ctx.author, reason, shorten=True)
bans = await guild.bans() try:
bans = [be.user for be in bans] ban_entry = await guild.fetch_ban(discord.Object(user_id))
user = discord.utils.get(bans, id=user_id) except discord.NotFound:
if not user:
await ctx.send(_("It seems that user isn't banned!")) await ctx.send(_("It seems that user isn't banned!"))
return return
try: try:
await guild.unban(user, reason=audit_reason) await guild.unban(ban_entry.user, reason=audit_reason)
except discord.HTTPException: except discord.HTTPException:
await ctx.send(_("Something went wrong while attempting to unban that user.")) await ctx.send(_("Something went wrong while attempting to unban that user."))
return return
@ -920,7 +923,7 @@ class KickBanMixin(MixinMeta):
guild, guild,
ctx.message.created_at.replace(tzinfo=timezone.utc), ctx.message.created_at.replace(tzinfo=timezone.utc),
"unban", "unban",
user, ban_entry.user,
author, author,
reason, reason,
until=None, until=None,