7
7
8
8
import discord
9
9
from discord .ext .commands import has_permissions , BadArgument
10
-
10
+ from ..Components .CustomJoinLeaveMessages import CustomJoinLeaveMessages , format_join_leave , send_log
11
+ from .moderation import GuildNewMember
11
12
from ._utils import *
12
13
from .general import blurple
13
14
from .. import db
@@ -21,7 +22,8 @@ async def embed_paginatorinator(content_name, embed, text):
21
22
c_embed = embed .copy ()
22
23
c_embed .add_field (name = content_name , value = text [0 :1023 ], inline = False )
23
24
for n in range (1 , required_chunks ):
24
- c_embed .add_field (name = f"{ content_name } Continued ({ n } )" , value = text [1024 * n :(1024 * (n + 1 ))- 1 ], inline = False )
25
+ c_embed .add_field (name = f"{ content_name } Continued ({ n } )" , value = text [1024 * n :(1024 * (n + 1 )) - 1 ],
26
+ inline = False )
25
27
return c_embed
26
28
27
29
@@ -43,38 +45,17 @@ async def check_audit(guild, event_type, event_time=None):
43
45
except discord .Forbidden :
44
46
return None
45
47
46
- @staticmethod
47
- def format_join_leave (template : str , member : discord .Member ):
48
- """Formats join leave message templates
49
- {guild} = guild name
50
- {user} = user's name plus discriminator ex. SnowPlow#5196
51
- {user_name} = user's name without discriminator
52
- {user_mention} = user's mention
53
- {user_id} = user's ID
54
- """
55
- if template :
56
- return template .format (guild = member .guild , user = str (member ), user_name = member .name ,
57
- user_mention = member .mention , user_id = member .id )
58
- else :
59
- return "{user_mention}\n {user} ({user_id})" .format (user = str (member ), user_mention = member .mention ,
60
- user_id = member .id )
61
-
62
48
@Cog .listener ('on_member_join' )
63
49
async def on_member_join (self , member ):
64
50
"""Logs that a member joined, with optional custom message"""
65
- config = await CustomJoinLeaveMessages .get_by (guild_id = member .guild .id )
66
- if len (config ):
67
- channel = member .guild .get_channel (config [0 ].channel_id )
68
- if channel :
69
- embed = discord .Embed (color = 0x00FF00 )
70
- embed .set_author (name = 'Member Joined' , icon_url = member .avatar_url_as (format = 'png' , size = 32 ))
71
- embed .description = self .format_join_leave (config [0 ].join_message , member )
72
- embed .set_footer (text = "{} | {} members" .format (member .guild .name , member .guild .member_count ))
73
- try :
74
- await channel .send (content = member .mention if config [0 ].ping else None , embed = embed )
75
- except discord .Forbidden :
76
- DOZER_LOGGER .warning (
77
- f"Guild { member .guild } ({ member .guild .id } ) has invalid permissions for join/leave logs" )
51
+ nm_config = await GuildNewMember .get_by (guild_id = member .guild .id )
52
+ if len (nm_config ) == 0 :
53
+ await send_log (member )
54
+ else :
55
+ if nm_config [0 ].require_team :
56
+ return
57
+ else :
58
+ await send_log (member )
78
59
79
60
@Cog .listener ('on_member_remove' )
80
61
async def on_member_remove (self , member ):
@@ -85,7 +66,7 @@ async def on_member_remove(self, member):
85
66
if channel :
86
67
embed = discord .Embed (color = 0xFF0000 )
87
68
embed .set_author (name = 'Member Left' , icon_url = member .avatar_url_as (format = 'png' , size = 32 ))
88
- embed .description = self . format_join_leave (config [0 ].leave_message , member )
69
+ embed .description = format_join_leave (config [0 ].leave_message , member )
89
70
embed .set_footer (text = "{} | {} members" .format (member .guild .name , member .guild .member_count ))
90
71
try :
91
72
await channel .send (embed = embed )
@@ -367,11 +348,13 @@ async def on_message_edit(self, before, after):
367
348
first_message = await channel .send (embed = first_embed )
368
349
if second_embed :
369
350
second_message = await channel .send (embed = second_embed )
370
- first_embed .add_field (name = "Edited" , value = f"[CONTINUED](https://discordapp.com/channels/{ guild_id } "
371
- f"/{ second_message .channel .id } /{ second_message .id } )" , inline = False )
351
+ first_embed .add_field (name = "Edited" ,
352
+ value = f"[CONTINUED](https://discordapp.com/channels/{ guild_id } "
353
+ f"/{ second_message .channel .id } /{ second_message .id } )" , inline = False )
372
354
await first_message .edit (embed = first_embed )
373
- embed .set_field_at (0 , name = "Original" , value = f"[CONTINUED](https://discordapp.com/channels/{ guild_id } "
374
- f"/{ first_message .channel .id } /{ first_message .id } )" , inline = False )
355
+ embed .set_field_at (0 , name = "Original" ,
356
+ value = f"[CONTINUED](https://discordapp.com/channels/{ guild_id } "
357
+ f"/{ first_message .channel .id } /{ first_message .id } )" , inline = False )
375
358
await second_message .edit (embed = second_embed )
376
359
377
360
@Cog .listener ('on_member_ban' )
@@ -426,9 +409,9 @@ async def memberlogconfig(self, ctx):
426
409
embed .add_field (name = "Message Channel" , value = channel .mention if channel else "None" )
427
410
embed .add_field (name = "Ping on join" , value = config [0 ].ping )
428
411
embed .add_field (name = "Join template" , value = config [0 ].join_message , inline = False )
429
- embed .add_field (name = "Join Example" , value = self . format_join_leave (config [0 ].join_message , ctx .author ))
412
+ embed .add_field (name = "Join Example" , value = format_join_leave (config [0 ].join_message , ctx .author ))
430
413
embed .add_field (name = "Leave template" , value = config [0 ].leave_message , inline = False )
431
- embed .add_field (name = "Leave Example" , value = self . format_join_leave (config [0 ].leave_message , ctx .author ))
414
+ embed .add_field (name = "Leave Example" , value = format_join_leave (config [0 ].leave_message , ctx .author ))
432
415
await ctx .send (embed = embed )
433
416
else :
434
417
await ctx .send ("This guild has no member log configured" )
@@ -623,60 +606,6 @@ async def get_by(cls, **kwargs):
623
606
return result_list
624
607
625
608
626
- class CustomJoinLeaveMessages (db .DatabaseTable ):
627
- """Holds custom join leave messages"""
628
- __tablename__ = 'memberlogconfig'
629
- __uniques__ = 'guild_id'
630
-
631
- @classmethod
632
- async def initial_create (cls ):
633
- """Create the table in the database"""
634
- async with db .Pool .acquire () as conn :
635
- await conn .execute (f"""
636
- CREATE TABLE { cls .__tablename__ } (
637
- guild_id bigint PRIMARY KEY NOT NULL,
638
- memberlog_channel bigint NOT NULL,
639
- name varchar NOT NULL
640
- )""" )
641
-
642
- def __init__ (self , guild_id , channel_id = None , ping = None , join_message = None , leave_message = None ):
643
- super ().__init__ ()
644
- self .guild_id = guild_id
645
- self .channel_id = channel_id
646
- self .ping = ping
647
- self .join_message = join_message
648
- self .leave_message = leave_message
649
-
650
- @classmethod
651
- async def get_by (cls , ** kwargs ):
652
- results = await super ().get_by (** kwargs )
653
- result_list = []
654
- for result in results :
655
- obj = CustomJoinLeaveMessages (guild_id = result .get ("guild_id" ), channel_id = result .get ("channel_id" ),
656
- ping = result .get ("ping" ),
657
- join_message = result .get ("join_message" ),
658
- leave_message = result .get ("leave_message" ))
659
- result_list .append (obj )
660
- return result_list
661
-
662
- async def version_1 (self ):
663
- """DB migration v1"""
664
- async with db .Pool .acquire () as conn :
665
- await conn .execute (f"""
666
- alter table memberlogconfig rename column memberlog_channel to channel_id;
667
- alter table memberlogconfig alter column channel_id drop not null;
668
- alter table { self .__tablename__ } drop column IF EXISTS name;
669
- alter table { self .__tablename__ }
670
- add IF NOT EXISTS ping boolean default False;
671
- alter table { self .__tablename__ }
672
- add IF NOT EXISTS join_message text default null;
673
- alter table { self .__tablename__ }
674
- add IF NOT EXISTS leave_message text default null;
675
- """ )
676
-
677
- __versions__ = [version_1 ]
678
-
679
-
680
609
class GuildMessageLog (db .DatabaseTable ):
681
610
"""Holds config info for message logs"""
682
611
__tablename__ = 'messagelogconfig'
0 commit comments