feat(aurora): add scoped export functionality to aurora's /history
command
This commit is contained in:
parent
87942213a5
commit
987fc0dbf8
1 changed files with 15 additions and 17 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue