8
8
import discord
9
9
from discord .ext import commands
10
10
from discord .ext .commands import has_permissions , BadArgument
11
-
12
11
from dozer .context import DozerContext
12
+
13
13
from ._utils import *
14
14
from .general import blurple
15
15
from .. import db
@@ -46,38 +46,17 @@ async def check_audit(guild, event_type, event_time=None):
46
46
except discord .Forbidden :
47
47
return None
48
48
49
- @staticmethod
50
- def format_join_leave (template : str , member : discord .Member ):
51
- """Formats join leave message templates
52
- {guild} = guild name
53
- {user} = user's name plus discriminator ex. SnowPlow#5196
54
- {user_name} = user's name without discriminator
55
- {user_mention} = user's mention
56
- {user_id} = user's ID
57
- """
58
- if template :
59
- return template .format (guild = member .guild , user = str (member ), user_name = member .name ,
60
- user_mention = member .mention , user_id = member .id )
61
- else :
62
- return "{user_mention}\n {user} ({user_id})" .format (user = str (member ), user_mention = member .mention ,
63
- user_id = member .id )
64
-
65
49
@Cog .listener ('on_member_join' )
66
50
async def on_member_join (self , member ):
67
51
"""Logs that a member joined, with optional custom message"""
68
- config = await CustomJoinLeaveMessages .get_by (guild_id = member .guild .id )
69
- if len (config ):
70
- channel = member .guild .get_channel (config [0 ].channel_id )
71
- if channel :
72
- embed = discord .Embed (color = 0x00FF00 )
73
- embed .set_author (name = 'Member Joined' , icon_url = member .avatar_url_as (format = 'png' , size = 32 ))
74
- embed .description = self .format_join_leave (config [0 ].join_message , member )
75
- embed .set_footer (text = "{} | {} members" .format (member .guild .name , member .guild .member_count ))
76
- try :
77
- await channel .send (content = member .mention if config [0 ].ping else None , embed = embed )
78
- except discord .Forbidden :
79
- DOZER_LOGGER .warning (
80
- f"Guild { member .guild } ({ member .guild .id } ) has invalid permissions for join/leave logs" )
52
+ nm_config = await GuildNewMember .get_by (guild_id = member .guild .id )
53
+ if len (nm_config ) == 0 :
54
+ await send_log (member )
55
+ else :
56
+ if nm_config [0 ].require_team :
57
+ return
58
+ else :
59
+ await send_log (member )
81
60
82
61
@Cog .listener ('on_member_remove' )
83
62
async def on_member_remove (self , member ):
@@ -88,7 +67,7 @@ async def on_member_remove(self, member):
88
67
if channel :
89
68
embed = discord .Embed (color = 0xFF0000 )
90
69
embed .set_author (name = 'Member Left' , icon_url = member .avatar_url_as (format = 'png' , size = 32 ))
91
- embed .description = self . format_join_leave (config [0 ].leave_message , member )
70
+ embed .description = format_join_leave (config [0 ].leave_message , member )
92
71
embed .set_footer (text = "{} | {} members" .format (member .guild .name , member .guild .member_count ))
93
72
try :
94
73
await channel .send (embed = embed )
@@ -337,6 +316,8 @@ async def on_message_edit(self, before: discord.Message, after: discord.Message)
337
316
"""Logs message edits."""
338
317
if before .author .bot :
339
318
return
319
+ if isinstance (before .channel , discord .DMChannel ):
320
+ return
340
321
if after .edited_at is not None or before .edited_at is not None :
341
322
# There is a reason for this. That reason is that otherwise, an infinite spam loop occurs
342
323
guild_id = before .guild .id
@@ -429,9 +410,9 @@ async def memberlogconfig(self, ctx: DozerContext):
429
410
embed .add_field (name = "Message Channel" , value = channel .mention if channel else "None" )
430
411
embed .add_field (name = "Ping on join" , value = config [0 ].ping )
431
412
embed .add_field (name = "Join template" , value = config [0 ].join_message , inline = False )
432
- embed .add_field (name = "Join Example" , value = self . format_join_leave (config [0 ].join_message , ctx .author ))
413
+ embed .add_field (name = "Join Example" , value = format_join_leave (config [0 ].join_message , ctx .author ))
433
414
embed .add_field (name = "Leave template" , value = config [0 ].leave_message , inline = False )
434
- embed .add_field (name = "Leave Example" , value = self . format_join_leave (config [0 ].leave_message , ctx .author ))
415
+ embed .add_field (name = "Leave Example" , value = format_join_leave (config [0 ].leave_message , ctx .author ))
435
416
await ctx .send (embed = embed )
436
417
else :
437
418
await ctx .send ("This guild has no member log configured" )
@@ -625,7 +606,6 @@ async def get_by(cls, **kwargs):
625
606
result_list .append (obj )
626
607
return result_list
627
608
628
-
629
609
class CustomJoinLeaveMessages (db .DatabaseTable ):
630
610
"""Holds custom join leave messages"""
631
611
__tablename__ = 'memberlogconfig'
@@ -680,7 +660,6 @@ async def version_1(self):
680
660
681
661
__versions__ = [version_1 ]
682
662
683
-
684
663
class GuildMessageLog (db .DatabaseTable ):
685
664
"""Holds config info for message logs"""
686
665
__tablename__ = 'messagelogconfig'
0 commit comments