From d0ec406e1eaf55a3afc971b68169a85489e8e959 Mon Sep 17 00:00:00 2001 From: zevaryx Date: Wed, 4 May 2022 23:08:37 -0600 Subject: [PATCH] Fix various issues --- jarvis/client.py | 65 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 49 insertions(+), 16 deletions(-) diff --git a/jarvis/client.py b/jarvis/client.py index b364365..c0464dd 100644 --- a/jarvis/client.py +++ b/jarvis/client.py @@ -1,4 +1,5 @@ """Custom JARVIS client.""" +import asyncio import logging import re import traceback @@ -30,7 +31,7 @@ from naff.api.events.discord import ( from naff.api.events.internal import Button from naff.client.errors import CommandCheckFailure, CommandOnCooldown, HTTPException from naff.client.utils.misc_utils import find, find_all, get -from naff.models.discord.channel import DMChannel, GuildText +from naff.models.discord.channel import DMChannel from naff.models.discord.embed import Embed, EmbedField from naff.models.discord.enums import AuditLogEventType, Permissions from naff.models.discord.message import Message @@ -298,7 +299,9 @@ class Jarvis(Client): async def process_verify(self, before: Member, after: Member) -> Embed: """Process user verification.""" - auditlog = await after.guild.fetch_audit_log(user_id=before.id, action_type=AuditLogEventType.MEMBER_ROLE_UPDATE) + auditlog = await after.guild.fetch_audit_log( + user_id=before.id, action_type=AuditLogEventType.MEMBER_ROLE_UPDATE + ) audit_event = get(auditlog.events, reason="Verification passed") if audit_event: admin_mention = "[N/A]" @@ -308,9 +311,14 @@ class Jarvis(Client): admin_text = f"{admin.username}#{admin.discriminator}" fields = ( EmbedField(name="Moderator", value=f"{admin_mention} ({admin_text})"), - EmbedField(name="Reason", value=audit_event.reason) + EmbedField(name="Reason", value=audit_event.reason), + ) + embed = build_embed( + title="User Verified", + description=f"{after.mention} was verified", + fields=fields, + color="#fc9e3f", ) - embed = build_embed(title="User Verified", description=f"{after.mention} was verified", fields=fields, color="#fc9e3f") embed.set_author(name=after.display_name, icon_url=after.display_avatar.url) embed.set_footer(text=f"{after.username}#{after.discriminator} | {after.id}") return embed @@ -320,7 +328,9 @@ class Jarvis(Client): if before.roles == after.roles: return - auditlog = await after.guild.fetch_audit_log(user_id=before.id, action_type=AuditLogEventType.MEMBER_ROLE_UPDATE) + auditlog = await after.guild.fetch_audit_log( + user_id=before.id, action_type=AuditLogEventType.MEMBER_ROLE_UPDATE + ) new_roles = {} removed_roles = {} @@ -337,28 +347,47 @@ class Jarvis(Client): reason = entry.reason new_roles[role] = reason - new_text = "\n".join(f"k [v]" for k, v in new_roles.items()) or "None" - removed_text = "\n".join(f"k [v]" for k, v in removed_roles.items()) or "None" + new_text = "\n".join(f"{k} [{v}]" for k, v in new_roles.items()) or "None" + removed_text = "\n".join(f"{k} [{v}]" for k, v in removed_roles.items()) or "None" fields = ( EmbedField(name="Added Roles", value=new_text), EmbedField(name="Removed Roles", value=removed_text), ) - embed = build_embed(title="User Roles Changed", description=f"{after.mention} had roles changed", fields=fields, color="#fc9e3f") + embed = build_embed( + title="User Roles Changed", + description=f"{after.mention} had roles changed", + fields=fields, + color="#fc9e3f", + ) embed.set_author(name=after.display_name, icon_url=after.display_avatar.url) embed.set_footer(text=f"{after.username}#{after.discriminator} | {after.id}") return embed async def process_rename(self, before: Member, after: Member) -> None: """Process name change.""" - if before.nickname == after.nickname and before.discriminator == after.discriminator and before.username == after.username: + if ( + before.nickname == after.nickname + and before.discriminator == after.discriminator + and before.username == after.username + ): return - + fields = ( - EmbedField(name="Before", value=f"{before.display_name} ({before.username}#{before.discriminator})"), - EmbedField(name="After", value=f"{after.display_name} ({after.username}#{after.discriminator})"), + EmbedField( + name="Before", + value=f"{before.display_name} ({before.username}#{before.discriminator})", + ), + EmbedField( + name="After", value=f"{after.display_name} ({after.username}#{after.discriminator})" + ), + ) + embed = build_embed( + title="User Renamed", + description=f"{after.mention} changed their name", + fields=fields, + color="#fc9e3f", ) - embed = build_embed(title="User Renamed", description=f"{after.mention} changed their name", fields=fields, color="#fc9e3f") embed.set_author(name=after.display_name, icon_url=after.display_avatar.url) embed.set_footer(text=f"{after.username}#{after.discriminator} | {after.id}") return embed @@ -369,7 +398,9 @@ class Jarvis(Client): before = event.before after = event.after - if (before.display_name == after.display_name and before.roles == after.roles) or (not after or not before): + if (before.display_name == after.display_name and before.roles == after.roles) or ( + not after or not before + ): return log = await Setting.find_one(q(guild=before.guild.id, setting="activitylog")) @@ -378,7 +409,7 @@ class Jarvis(Client): await asyncio.sleep(0.5) # Wait for audit log embed = None if before._role_ids != after._role_ids: - verified = await Settings.find_one(q(guild=before.guild.id, setting="verified")) + verified = await Setting.find_one(q(guild=before.guild.id, setting="verified")) v_role = None if verified: v_role = await before.guild.fetch_role(verified.value) @@ -389,7 +420,9 @@ class Jarvis(Client): if not before.has_role(v_role) and after.has_role(v_role): embed = await self.process_verify(before, after) if not embed: - embed = self.process_rolechange(before, after) or self.process_rename(before, after) + embed = self.process_rolechange(before, after) or self.process_rename( + before, after + ) if embed: await channel.send(embed=embed)