diff --git a/bot.py b/bot.py index de5b7c7672..80c6b6597f 100644 --- a/bot.py +++ b/bot.py @@ -1059,10 +1059,13 @@ async def on_member_remove(self, member): return thread = await self.threads.find(recipient=member) if thread: - embed = discord.Embed( - description="The recipient has left the server.", color=self.error_color - ) - await thread.channel.send(embed=embed) + if self.config["close_on_leave"]: + await thread.close(closer=member.guild.me, message="The recipient has left the server.", silent=True) + else: + embed = discord.Embed( + description="The recipient has left the server.", color=self.error_color + ) + await thread.channel.send(embed=embed) async def on_member_join(self, member): if member.guild != self.guild: diff --git a/core/config.py b/core/config.py index e376d2048e..132ac27ee0 100644 --- a/core/config.py +++ b/core/config.py @@ -69,6 +69,7 @@ class ConfigManager: "disabled_current_thread_response": "We are not accepting any messages.", "disabled_current_thread_footer": "Please try again later...", "transfer_reactions": True, + "close_on_leave": False, # moderation "recipient_color": str(discord.Color.gold()), "mod_color": str(discord.Color.green()), @@ -142,6 +143,7 @@ class ConfigManager: "thread_move_notify", "thread_move_notify_mods", "transfer_reactions", + "close_on_leave", "enable_plugins", "enable_eval", } diff --git a/core/config_help.json b/core/config_help.json index 0c2f68e579..b8c626b4b8 100644 --- a/core/config_help.json +++ b/core/config_help.json @@ -572,6 +572,14 @@ ], "notes": [] }, + "close_on_leave": { + "default": "No", + "description": "Closes a modmail thread upon user leave automatically", + "examples":[ + "`{prefix}config set close_on_leave yes" + ], + "notes": [] + }, "modmail_guild_id": { "default": "Fallback on `GUILD_ID`", "description": "The ID of the discord server where the threads channels should be created (receiving server).",