Skip to content

Commit f2cbc4e

Browse files
committed
Add welcomer and goodbye autoresponder messages to serverconfig
1 parent 8f625a4 commit f2cbc4e

File tree

2 files changed

+131
-0
lines changed

2 files changed

+131
-0
lines changed

cogs/serverconfig.py

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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\nA 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\nA 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",

main.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,39 @@ async def on_member_join(ctx):
175175
role = discord.Guild.get_role(ctx.guild, int(autorole))
176176
await ctx.add_roles(role, reason="Role assigned due to autoroles.")
177177

178+
# Welcome Message Autoresponder
179+
welcome_message = serverconfig.fetch_welcome_message(ctx.guild.id)
180+
if welcome_message["message"] is not None:
181+
welcome_message_autoresponder_channel = client.get_channel(welcome_message["channel"])
182+
183+
# Perform attribute formatting for welcome message
184+
welcome_message_formatted = welcome_message["message"]
185+
welcome_message_formatted = welcome_message_formatted.replace("[user.nickname]", str(ctx.author.display_name))
186+
welcome_message_formatted = welcome_message_formatted.replace("[user.username]", str(ctx.author.name))
187+
welcome_message_formatted = welcome_message_formatted.replace("[user.mention]", str(ctx.author.mention))
188+
welcome_message_formatted = welcome_message_formatted.replace("[server.name]", str(ctx.guild.name))
189+
welcome_message_formatted = welcome_message_formatted.replace("[server.membercount]", str(ctx.guild.member_count))
190+
191+
await welcome_message_autoresponder_channel.send(welcome_message_formatted)
192+
193+
@client.event
194+
async def on_member_leave(ctx):
195+
"""This event is fired whenever a member leaves a server."""
196+
# Goodbye Message Autoresponder
197+
goodbye_message = serverconfig.fetch_goodbye_message(ctx.guild.id)
198+
if goodbye_message["message"] is not None:
199+
goodbye_message_autoresponder_channel = client.get_channel(goodbye_message["channel"])
200+
201+
# Perform attribute formatting for goodbye message
202+
goodbye_message_formatted = goodbye_message["message"]
203+
goodbye_message_formatted = goodbye_message_formatted.replace("[user.nickname]", str(ctx.author.display_name))
204+
goodbye_message_formatted = goodbye_message_formatted.replace("[user.username]", str(ctx.author.name))
205+
goodbye_message_formatted = goodbye_message_formatted.replace("[user.mention]", str(ctx.author.mention))
206+
goodbye_message_formatted = goodbye_message_formatted.replace("[server.name]", str(ctx.guild.name))
207+
goodbye_message_formatted = goodbye_message_formatted.replace("[server.membercount]", str(ctx.guild.member_count))
208+
209+
await goodbye_message_autoresponder_channel.send(goodbye_message_formatted)
210+
178211
@client.event
179212
async def on_message(ctx):
180213
"""This event is fired whenever a message is sent (in a readable channel)."""

0 commit comments

Comments
 (0)