Fix various issues
This commit is contained in:
parent
c47d0373d4
commit
d0ec406e1e
1 changed files with 49 additions and 16 deletions
|
@ -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)
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue