@@ -73,6 +73,104 @@ async def autorole(self, ctx: ApplicationContext, channel: discord.TextChannel =
73
73
)
74
74
await ctx .respond (embed = localembed )
75
75
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
+
76
174
# Server Member Verification System
77
175
@serverconfig_cmds .command (
78
176
name = "enable_verification" ,
0 commit comments