Update member events, fix error if activitylog channel no longer exists
This commit is contained in:
parent
d79fc0e994
commit
a220b29303
1 changed files with 41 additions and 9 deletions
|
@ -6,14 +6,19 @@ from datetime import datetime, timezone
|
|||
|
||||
from aiohttp import ClientSession
|
||||
from dis_snek import Snake, listen
|
||||
from dis_snek.api.events.discord import MessageCreate, MessageDelete, MessageUpdate
|
||||
from dis_snek.api.events.discord import (
|
||||
MemberAdd,
|
||||
MemberRemove,
|
||||
MessageCreate,
|
||||
MessageDelete,
|
||||
MessageUpdate,
|
||||
)
|
||||
from dis_snek.client.errors import CommandCheckFailure, CommandOnCooldown
|
||||
from dis_snek.client.utils.misc_utils import find_all
|
||||
from dis_snek.models.discord.channel import DMChannel
|
||||
from dis_snek.models.discord.embed import EmbedField
|
||||
from dis_snek.models.discord.enums import Permissions
|
||||
from dis_snek.models.discord.message import Message
|
||||
from dis_snek.models.discord.user import Member
|
||||
from dis_snek.models.snek.context import Context, InteractionContext
|
||||
from dis_snek.models.snek.tasks.task import Task
|
||||
from dis_snek.models.snek.tasks.triggers import IntervalTrigger
|
||||
|
@ -162,7 +167,7 @@ class Jarvis(Snake):
|
|||
async def on_command(self, ctx: InteractionContext) -> None:
|
||||
"""Lepton on_command override."""
|
||||
if not isinstance(ctx.channel, DMChannel) and ctx.invoked_name not in ["pw"]:
|
||||
modlog = await Setting.find_one(q(guild=ctx.guild.id, setting="modlog"))
|
||||
modlog = await Setting.find_one(q(guild=ctx.guild.id, setting="activitylog"))
|
||||
if modlog:
|
||||
channel = await ctx.guild.fetch_channel(modlog.value)
|
||||
args = []
|
||||
|
@ -192,13 +197,21 @@ class Jarvis(Snake):
|
|||
embed.set_footer(
|
||||
text=f"{ctx.author.user.username}#{ctx.author.discriminator} | {ctx.author.id}"
|
||||
)
|
||||
await channel.send(embed=embed)
|
||||
if channel:
|
||||
await channel.send(embed=embed)
|
||||
else:
|
||||
self.logger.warning(
|
||||
f"Activitylog channel no longer exists in {ctx.guild.name}, removing"
|
||||
)
|
||||
await modlog.delete()
|
||||
|
||||
# Events
|
||||
# Member
|
||||
@listen()
|
||||
async def on_member_join(self, user: Member) -> None:
|
||||
"""Handle on_member_join event."""
|
||||
guild = user.guild
|
||||
async def on_member_add(self, event: MemberAdd) -> None:
|
||||
"""Handle on_member_add event."""
|
||||
user = event.member
|
||||
guild = event.guild
|
||||
unverified = await Setting.find_one(q(guild=guild.id, setting="unverified"))
|
||||
if unverified:
|
||||
self.logger.debug(f"Applying unverified role to {user.id} in {guild.id}")
|
||||
|
@ -206,6 +219,25 @@ class Jarvis(Snake):
|
|||
if role not in user.roles:
|
||||
await user.add_role(role, reason="User just joined and is unverified")
|
||||
|
||||
@listen()
|
||||
async def on_member_remove(self, event: MemberRemove) -> None:
|
||||
"""Handle on_member_remove event."""
|
||||
user = event.member
|
||||
guild = event.guild
|
||||
log = await Setting.find_one(q(guild=guild.id, setting="activitylog"))
|
||||
if log:
|
||||
self.logger.debug(f"User {user.id} left {guild.id}")
|
||||
channel = await guild.fetch_channel(log.channel)
|
||||
embed = build_embed(
|
||||
title="Member Left",
|
||||
desciption=f"{user.username}#{user.discriminator} left {guild.name}",
|
||||
fields=[],
|
||||
)
|
||||
embed.set_author(name=user.username, icon_url=user.avatar.url)
|
||||
embed.set_footer(text=f"{user.username}#{user.discriminator} | {user.id}")
|
||||
await channel.send(embed=embed)
|
||||
|
||||
# Message
|
||||
async def autopurge(self, message: Message) -> None:
|
||||
"""Handle autopurge events."""
|
||||
autopurge = await Autopurge.find_one(q(guild=message.guild.id, channel=message.channel.id))
|
||||
|
@ -429,7 +461,7 @@ class Jarvis(Snake):
|
|||
before = event.before
|
||||
after = event.after
|
||||
if not after.author.bot:
|
||||
modlog = await Setting.find_one(q(guild=after.guild.id, setting="modlog"))
|
||||
modlog = await Setting.find_one(q(guild=after.guild.id, setting="activitylog"))
|
||||
if modlog:
|
||||
if not before or before.content == after.content or before.content is None:
|
||||
return
|
||||
|
@ -481,7 +513,7 @@ class Jarvis(Snake):
|
|||
async def on_message_delete(self, event: MessageDelete) -> None:
|
||||
"""Process on_message_delete events."""
|
||||
message = event.message
|
||||
modlog = await Setting.find_one(q(guild=message.guild.id, setting="modlog"))
|
||||
modlog = await Setting.find_one(q(guild=message.guild.id, setting="activitylog"))
|
||||
if modlog:
|
||||
try:
|
||||
content = message.content or "N/A"
|
||||
|
|
Loading…
Add table
Reference in a new issue