From f906886512cc47bc0fbedf0ead916db8a9a0e899 Mon Sep 17 00:00:00 2001 From: Zevaryx Date: Sun, 29 May 2022 19:36:16 -0600 Subject: [PATCH] Prevent modlog action prompt from opening multiple cases, closes #140 --- jarvis/client.py | 51 ++++++++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/jarvis/client.py b/jarvis/client.py index fe6abef..338c96a 100644 --- a/jarvis/client.py +++ b/jarvis/client.py @@ -799,30 +799,39 @@ class Jarvis(Client): note = Note( admin=context.author.id, content="Moderation case opened via message" ) - modlog = Modlog( - user=user.id, - admin=context.author.id, - guild=context.guild.id, - actions=[action], - notes=[note], + modlog = await Modlog.find_one( + q(user=user.id, guild=context.guild.id, open=True) ) - await modlog.commit() + if modlog: + self.logger.debug("User already has active case in guild") + await context.send( + f"User already has open case: {modlog.nanoid}", ephemeral=True + ) + else: + modlog = Modlog( + user=user.id, + admin=context.author.id, + guild=context.guild.id, + actions=[action], + notes=[note], + ) + await modlog.commit() - fields = ( - EmbedField(name="Admin", value=context.author.mention), - EmbedField(name="Opening Action", value=f"{name} {parent}"), - ) - embed = build_embed( - title="Moderation Case Opened", - description=f"Moderation case opened against {user.mention}", - fields=fields, - ) - embed.set_author( - name=user.username + "#" + user.discriminator, - icon_url=user.display_avatar.url, - ) + fields = ( + EmbedField(name="Admin", value=context.author.mention), + EmbedField(name="Opening Action", value=f"{name} {parent}"), + ) + embed = build_embed( + title="Moderation Case Opened", + description=f"Moderation case opened against {user.mention}", + fields=fields, + ) + embed.set_author( + name=user.username + "#" + user.discriminator, + icon_url=user.display_avatar.url, + ) - await context.message.edit(embed=embed) + await context.message.edit(embed=embed) elif not user: self.logger.debug("User no longer in guild") await context.send("User no longer in guild", ephemeral=True)