feat(aurora): add scoped export functionality to aurora's /history command

This commit is contained in:
Seaswimmer 2024-06-30 04:56:42 -04:00
parent 87942213a5
commit 987fc0dbf8
Signed by: cswimr
GPG key ID: 3813315477F26F82

View file

@ -1085,47 +1085,45 @@ class Aurora(commands.Cog):
)
return
database = await Moderation.connect()
if target:
filename = "moderation_target_" + str(target.id) + "_" + str(interaction.guild.id) + ".json"
moderations = await Moderation.find_by_target(interaction.client, interaction.guild.id, target.id)
elif moderator:
filename = "moderation_moderator_" + str(moderator.id) + "_" + str(interaction.guild.id) + ".json"
moderations = await Moderation.find_by_moderator(interaction.client, interaction.guild.id, moderator.id)
else:
filename = "moderation_" + str(interaction.guild.id) + ".json"
moderations = await Moderation.get_latest(interaction.client, interaction.guild.id)
if export:
try:
filename = (
filepath = (
str(data_manager.cog_data_path(cog_instance=self))
+ str(os.sep)
+ f"moderation_{interaction.guild.id}.json"
+ filename
)
cases = await Moderation.get_latest(bot=interaction.client, guild_id=interaction.guild.id)
with open(filename, "w", encoding="utf-8") as f:
dump(obj=cases, fp=f, indent=2)
dump(obj=moderations, fp=f, indent=2)
await interaction.followup.send(
file=discord.File(
filename, f"moderation_{interaction.guild.id}.json"
fp=filepath, filename=filename
),
ephemeral=ephemeral,
)
os.remove(filename)
os.remove(filepath)
except json.JSONDecodeError as e:
await interaction.followup.send(
content=error(
"An error occured while exporting the moderation history.\nError:\n"
)
+ box(e, "py"),
+ box(text=e, lang="py"),
ephemeral=ephemeral,
)
await database.close()
return
if target:
moderations = await Moderation.find_by_target(interaction.client, interaction.guild.id, target.id)
elif moderator:
moderations = await Moderation.find_by_moderator(interaction.client, interaction.guild.id, moderator.id)
else:
moderations = await Moderation.get_latest(interaction.client, interaction.guild.id)
case_quantity = len(moderations)
page_quantity = ceil(case_quantity / pagesize)
start_index = (page - 1) * pagesize