@@ -73,6 +73,104 @@ async def autorole(self, ctx: ApplicationContext, channel: discord.TextChannel =
7373 )
7474 await ctx .respond (embed = localembed )
7575
76+ @serverconfig_cmds .command (
77+ name = "enable_welcome_message" ,
78+ description = "Automatically send a welcome message to a specified channel in the server, when a member joins."
79+ )
80+ @option (name = "channel" , description = "The channel in which you want to send the welcome message." , type = discord .TextChannel )
81+ @option (name = "message" , description = "Formatting: [user.nickname], [user.username], [user.mention], [server.name], [server.membercount]" , type = str )
82+ async def enable_welcome_message (self , ctx : ApplicationContext , channel : discord .TextChannel , message : str ):
83+ """Automatically send a welcome message to a specified channel in the server, when a member joins."""
84+ if not ctx .author .guild_permissions .manage_guild :
85+ return await ctx .respond ("You can't use this command! You need the `Manage Server` permission to run this." , ephemeral = True )
86+ serverconf .set_welcome_message (ctx .guild .id , channel .id , message )
87+
88+ # Test Welcome Message
89+ welcome_message = serverconf .fetch_welcome_message (ctx .guild .id )
90+ if welcome_message ["message" ] is not None :
91+ welcome_message_autoresponder_channel = discord .Guild .get_channel (ctx .guild , welcome_message ["channel" ])
92+
93+ # Perform attribute formatting for welcome message
94+ welcome_message_formatted = welcome_message ["message" ]
95+ welcome_message_formatted = welcome_message_formatted .replace ("[user.nickname]" , str (ctx .author .display_name ))
96+ welcome_message_formatted = welcome_message_formatted .replace ("[user.username]" , str (ctx .author .name ))
97+ welcome_message_formatted = welcome_message_formatted .replace ("[user.mention]" , str (ctx .author .mention ))
98+ welcome_message_formatted = welcome_message_formatted .replace ("[server.name]" , str (ctx .guild .name ))
99+ welcome_message_formatted = welcome_message_formatted .replace ("[server.membercount]" , str (ctx .guild .member_count ))
100+ await welcome_message_autoresponder_channel .send (welcome_message_formatted )
101+
102+ localembed = discord .Embed (
103+ title = f":white_check_mark: Server Welcome Message Autoresponder has been successfully set for **{ ctx .guild .name } **!" ,
104+ description = f"From now onwards, all new members who join this server will be sent a welcome message in { channel .mention } \n \n A test message has been sent to the channel for reference." ,
105+ color = discord .Color .green ()
106+ )
107+ await ctx .respond (embed = localembed )
108+
109+ @serverconfig_cmds .command (
110+ name = "disable_welcome_message" ,
111+ description = "Disables welcome message autoresponder for this server."
112+ )
113+ async def disable_welcome_message (self , ctx : ApplicationContext ):
114+ """Disables welcome message autoresponder for this server."""
115+ if not ctx .author .guild_permissions .manage_guild :
116+ return await ctx .respond ("You can't use this command! You need the `Manage Server` permission to run this." , ephemeral = True )
117+ serverconf .set_welcome_message (ctx .guild .id , None , None )
118+ localembed = discord .Embed (
119+ title = f":white_check_mark: Server Welcome Message Autoresponder successfully disabled for **{ ctx .guild .name } **." ,
120+ description = "From now onwards, no new welcome messages will be sent in the server for newly-joined members." ,
121+ color = discord .Color .green ()
122+ )
123+ await ctx .respond (embed = localembed )
124+
125+ @serverconfig_cmds .command (
126+ name = "enable_goodbye_message" ,
127+ description = "Automatically send a goodbye message to a specified channel in the server, when a member leaves."
128+ )
129+ @option (name = "channel" , description = "The channel in which you want to send the goodbye message." , type = discord .TextChannel )
130+ @option (name = "message" , description = "Formatting: [user.nickname], [user.username], [user.mention], [server.name], [server.membercount]" , type = str )
131+ async def enable_goodbye_message (self , ctx : ApplicationContext , channel : discord .TextChannel , message : str ):
132+ """Automatically send a goodbye message to a specified channel in the server, when a member leaves."""
133+ if not ctx .author .guild_permissions .manage_guild :
134+ return await ctx .respond ("You can't use this command! You need the `Manage Server` permission to run this." , ephemeral = True )
135+ serverconf .set_goodbye_message (ctx .guild .id , channel .id , message )
136+
137+ # Test Goodbye Message
138+ goodbye_message = serverconf .fetch_goodbye_message (ctx .guild .id )
139+ if goodbye_message ["message" ] is not None :
140+ goodbye_message_autoresponder_channel = discord .Guild .get_channel (ctx .guild , goodbye_message ["channel" ])
141+
142+ # Perform attribute formatting for goodbye message
143+ goodbye_message_formatted = goodbye_message ["message" ]
144+ goodbye_message_formatted = goodbye_message_formatted .replace ("[user.nickname]" , str (ctx .author .display_name ))
145+ goodbye_message_formatted = goodbye_message_formatted .replace ("[user.username]" , str (ctx .author .name ))
146+ goodbye_message_formatted = goodbye_message_formatted .replace ("[user.mention]" , str (ctx .author .mention ))
147+ goodbye_message_formatted = goodbye_message_formatted .replace ("[server.name]" , str (ctx .guild .name ))
148+ goodbye_message_formatted = goodbye_message_formatted .replace ("[server.membercount]" , str (ctx .guild .member_count ))
149+ await goodbye_message_autoresponder_channel .send (goodbye_message_formatted )
150+
151+ localembed = discord .Embed (
152+ title = f":white_check_mark: Server Goodbye Message Autoresponder has been successfully set for **{ ctx .guild .name } **!" ,
153+ description = f"From now onwards, a goodbye message will be sent in { channel .mention } for all members who leave this server.\n \n A test message has been sent to the channel for reference." ,
154+ color = discord .Color .green ()
155+ )
156+ await ctx .respond (embed = localembed )
157+
158+ @serverconfig_cmds .command (
159+ name = "disable_goodbye_message" ,
160+ description = "Disables goodbye message autoresponder for this server."
161+ )
162+ async def disable_goodbye_message (self , ctx : ApplicationContext ):
163+ """Disables goodbye message autoresponder for this server."""
164+ if not ctx .author .guild_permissions .manage_guild :
165+ return await ctx .respond ("You can't use this command! You need the `Manage Server` permission to run this." , ephemeral = True )
166+ serverconf .set_goodbye_message (ctx .guild .id , None , None )
167+ localembed = discord .Embed (
168+ title = f":white_check_mark: Server Goodbye Message Autoresponder successfully disabled for **{ ctx .guild .name } **." ,
169+ description = "From now onwards, no new goodbye messages will be sent in the server for members who leave." ,
170+ color = discord .Color .green ()
171+ )
172+ await ctx .respond (embed = localembed )
173+
76174 # Server Member Verification System
77175 @serverconfig_cmds .command (
78176 name = "enable_verification" ,
0 commit comments