Fix various issues

This commit is contained in:
Zeva Rose 2022-05-04 23:08:37 -06:00
parent c47d0373d4
commit d0ec406e1e

View file

@ -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)