diff options
| -rw-r--r-- | bot/exts/utils/bot.py | 18 | 
1 files changed, 17 insertions, 1 deletions
| diff --git a/bot/exts/utils/bot.py b/bot/exts/utils/bot.py index d84709616..f3a7206fc 100644 --- a/bot/exts/utils/bot.py +++ b/bot/exts/utils/bot.py @@ -1,7 +1,8 @@  import logging +from contextlib import suppress  from typing import Optional -from discord import Embed, TextChannel +from discord import Embed, Forbidden, TextChannel, Thread  from discord.ext.commands import Cog, Context, command, group, has_any_role  from bot.bot import Bot @@ -16,6 +17,21 @@ class BotCog(Cog, name="Bot"):      def __init__(self, bot: Bot):          self.bot = bot +    @Cog.listener() +    async def on_thread_join(self, thread: Thread) -> None: +        """ +        Try to join newly created threads. + +        Despite the event name being misleading, this is dispatched when new threads are created. +        We want our bots to automatically join threads in order to answer commands using their prefixes. +        """ +        if thread.me: +            # Already in this thread, return early +            return + +        with suppress(Forbidden): +            await thread.join() +      @group(invoke_without_command=True, name="bot", hidden=True)      async def botinfo_group(self, ctx: Context) -> None:          """Bot informational commands.""" | 
