fix(moderation): fixed history command (hopefully)
Some checks failed
Pylint / Pylint (3.10) (push) Failing after 55s
Some checks failed
Pylint / Pylint (3.10) (push) Failing after 55s
This commit is contained in:
parent
9b68892b67
commit
71d7329696
1 changed files with 29 additions and 7 deletions
|
@ -697,9 +697,10 @@ class Moderation(commands.Cog):
|
|||
Page to select
|
||||
epheremal: bool
|
||||
Hide the command response"""
|
||||
await interaction.response.defer(ephemeral=ephemeral)
|
||||
permissions = self.check_permissions(interaction.client.user, ['embed_links'], interaction)
|
||||
if permissions:
|
||||
await interaction.response.send_message(f"I do not have the `{permissions}` permission, required for this action.", ephemeral=True)
|
||||
await interaction.followup.send(f"I do not have the `{permissions}` permission, required for this action.", ephemeral=True)
|
||||
return
|
||||
database = await self.connect()
|
||||
cursor = database.cursor()
|
||||
|
@ -751,7 +752,7 @@ class Moderation(commands.Cog):
|
|||
if bool(case['resolved']):
|
||||
field_value = field_value + "\n**Resolved:** True"
|
||||
embed.add_field(name=field_name, value=field_value, inline=False)
|
||||
await interaction.response.send_message(embed=embed, ephemeral=ephemeral)
|
||||
await interaction.followup.send(embed=embed)
|
||||
|
||||
@app_commands.command(name="resolve")
|
||||
async def resolve(self, interaction: discord.Interaction, case_number: int, reason: str = None):
|
||||
|
@ -861,14 +862,35 @@ class Moderation(commands.Cog):
|
|||
moderation_ids = [row[1] for row in result]
|
||||
for target_id, moderation_id in zip(target_ids, moderation_ids):
|
||||
user: discord.User = await self.bot.fetch_user(target_id)
|
||||
await guild.unban(user, reason=f"Automatic unban from case #{moderation_id}")
|
||||
embed = await self.embed_factory('message', guild, f'Automatic unban from case #{moderation_id}', 'unbanned')
|
||||
try:
|
||||
await user.send(embed=embed)
|
||||
except discord.errors.HTTPException:
|
||||
await guild.unban(user, reason=f"Automatic unban from case #{moderation_id}")
|
||||
embed = await self.embed_factory('message', guild, f'Automatic unban from case #{moderation_id}', 'unbanned')
|
||||
try:
|
||||
await user.send(embed=embed)
|
||||
except discord.errors.HTTPException:
|
||||
pass
|
||||
except [discord.errors.NotFound, discord.errors.Forbidden, discord.errors.HTTPException] as e:
|
||||
print(f"Failed to unban {user.name}#{user.discriminator} ({user.id}) from {guild.name} ({guild.id})\n{e}")
|
||||
pass
|
||||
expiry_query = f"UPDATE `{db}`.`moderation_{guild.id}` SET expired = 1 WHERE (end_timestamp != 0 AND end_timestamp <= %s AND expired = 0) OR (expired = 0 AND resolved = 1)"
|
||||
expiry_query = f"UPDATE `{db}`.`moderation_{guild.id}` SET expired = 1 WHERE (end_timestamp != 0 AND end_timestamp <= %s AND expired = 0 AND moderation_type != 'BLACKLIST') OR (expired = 0 AND resolved = 1 AND moderation_type != 'BLACKLIST')"
|
||||
cursor.execute(expiry_query, (time.time(),))
|
||||
blacklist_query = f"SELECT target_id, moderation_id, role_id FROM moderation_{guild.id} WHERE end_timestamp != 0 AND end_timestamp <= %s AND moderation_type = 'BLACKLIST' AND expired = 0"
|
||||
try:
|
||||
cursor.execute(blacklist_query, (time.time(),))
|
||||
result = cursor.fetchall()
|
||||
except mysql.connector.errors.ProgrammingError:
|
||||
continue
|
||||
target_ids = [row[0] for row in result]
|
||||
moderation_ids = [row[1] for row in result]
|
||||
role_ids = [row[2] for row in result]
|
||||
for target_id, moderation_id, role_id in zip(target_ids, moderation_ids, role_ids):
|
||||
try:
|
||||
member: discord.Member = await guild.fetch_member(target_id)
|
||||
role: discord.Role = guild.get_role(role_id)
|
||||
if role is None:
|
||||
raise discord.errors.NotFound
|
||||
except [discord.errors.NotFound, discord.errors.Forbidden, discord.errors.HTTPException]:
|
||||
continue
|
||||
database.commit()
|
||||
cursor.close()
|
||||
database.close()
|
||||
|
|
Loading…
Reference in a new issue