From b05e6f575fccbe11a0596254cdee5f1cecedda18 Mon Sep 17 00:00:00 2001 From: SeaswimmerTheFsh Date: Mon, 18 Dec 2023 16:50:00 -0500 Subject: [PATCH] fix(moderation): actually fixed duration importing, again --- moderation/importers/moderation.py | 98 ++++++++++++++---------------- 1 file changed, 46 insertions(+), 52 deletions(-) diff --git a/moderation/importers/moderation.py b/moderation/importers/moderation.py index 29fc6c7..e8fa238 100644 --- a/moderation/importers/moderation.py +++ b/moderation/importers/moderation.py @@ -4,6 +4,7 @@ from redbot.core import commands from discord import Message, ButtonStyle, Interaction, ui from ..database import connect, create_guild_table, mysql_log + class ImportModerationView(ui.View): def __init__(self, timeout, ctx, message): super().__init__() @@ -11,9 +12,13 @@ class ImportModerationView(ui.View): self.message: Message = message @ui.button(label="Yes", style=ButtonStyle.success) - async def import_button_y(self, interaction: Interaction, button: ui.Button): # pylint: disable=unused-argument + async def import_button_y( + self, interaction: Interaction, button: ui.Button + ): # pylint: disable=unused-argument await self.message.delete() - await interaction.response.send_message("Deleting original table...", ephemeral=True) + await interaction.response.send_message( + "Deleting original table...", ephemeral=True + ) database = await connect() cursor = database.cursor() @@ -31,79 +36,68 @@ class ImportModerationView(ui.View): await interaction.edit_original_response(content="Importing moderations...") file = await self.ctx.message.attachments[0].read() - data: [dict] = sorted(json.loads(file), key=lambda x: x['moderation_id']) + data: [dict] = sorted(json.loads(file), key=lambda x: x["moderation_id"]) - user_mod_types = [ - 'NOTE', - 'WARN', - 'MUTE', - 'UNMUTE', - 'KICK', - 'BAN', - 'UNBAN' - ] + user_mod_types = ["NOTE", "WARN", "MUTE", "UNMUTE", "KICK", "BAN", "UNBAN"] - channel_mod_types = [ - 'SLOWMODE', - 'LOCKDOWN' - ] + channel_mod_types = ["SLOWMODE", "LOCKDOWN"] failed_cases = [] for case in data: - if case['moderation_id'] == 0: + if case["moderation_id"] == 0: continue - if 'target_type' not in case or not case['target_type']: - if case['moderation_type'] in user_mod_types: - case['target_type'] = 'USER' - elif case['moderation_type'] in channel_mod_types: - case['target_type'] = 'CHANNEL' + if "target_type" not in case or not case["target_type"]: + if case["moderation_type"] in user_mod_types: + case["target_type"] = "USER" + elif case["moderation_type"] in channel_mod_types: + case["target_type"] = "CHANNEL" - if 'role_id' not in case or not case['role_id']: - case['role_id'] = 0 + if "role_id" not in case or not case["role_id"]: + case["role_id"] = 0 - if 'changes' not in case or not case['changes']: - case['changes'] = [] + if "changes" not in case or not case["changes"]: + case["changes"] = [] - if 'metadata' not in case or not case['metadata']: - case['metadata'] = {} + if "metadata" not in case or not case["metadata"]: + case["metadata"] = {} - if case['duration'] != 'NULL': - duration_t = datetime.strptime(case['duration'], "%H:%M:%S") - duration = timedelta( - hours=duration_t.hours, - minutes=duration_t.minutes, - seconds=duration_t.seconds - ) + if case["duration"] != "NULL": + hours, minutes, seconds = map(int, case["duration"].split(":")) + duration = timedelta(hours=hours, minutes=minutes, seconds=seconds) else: - duration = 'NULL' + duration = "NULL" await mysql_log( self.ctx.guild.id, - case['moderator_id'], - case['moderation_type'], - case['target_type'], - case['target_id'], - case['role_id'], + case["moderator_id"], + case["moderation_type"], + case["target_type"], + case["target_id"], + case["role_id"], duration, - case['reason'], - timestamp=case['timestamp'], - resolved=case['resolved'], - resolved_by=case['resolved_by'], - resolved_reason=case['resolve_reason'], - expired=case['expired'], - changes=case['changes'], - metadata=case['metadata'], - database=database + case["reason"], + timestamp=case["timestamp"], + resolved=case["resolved"], + resolved_by=case["resolved_by"], + resolved_reason=case["resolve_reason"], + expired=case["expired"], + changes=case["changes"], + metadata=case["metadata"], + database=database, ) await interaction.edit_original_response(content="Import complete.") if failed_cases: - await interaction.edit_original_response(content=f"Import complete.\n*Failed to import the following cases:*\n```{failed_cases}```") + await interaction.edit_original_response( + content=f"Import complete.\n*Failed to import the following cases:*\n```{failed_cases}```" + ) @ui.button(label="No", style=ButtonStyle.danger) - async def import_button_n(self, interaction: Interaction, button: ui.Button): # pylint: disable=unused-argument + async def import_button_n( + self, interaction: Interaction, button: ui.Button + ): # pylint: disable=unused-argument await self.message.edit("Import cancelled.", view=None) await self.message.delete(10) await self.ctx.message.delete(10)