diff options
Diffstat (limited to 'bot')
| -rw-r--r-- | bot/bot.py | 20 | 
1 files changed, 18 insertions, 2 deletions
@@ -1,14 +1,15 @@  import asyncio  import logging  import socket +from contextlib import suppress  from typing import Optional  import discord  from aiohttp import AsyncResolver, ClientSession, TCPConnector  from async_rediscache import RedisSession -from discord import DiscordException, Embed +from discord import DiscordException, Embed, Forbidden, Thread  from discord.ext import commands -from discord.ext.commands import when_mentioned_or +from discord.ext.commands import Cog, when_mentioned_or  from bot import constants @@ -46,6 +47,21 @@ class Bot(commands.Bot):              return None          return guild.me +    @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() +      async def close(self) -> None:          """Close Redis session when bot is shutting down."""          await super().close()  |