aboutsummaryrefslogtreecommitdiffstats
path: root/bot/bot.py
diff options
context:
space:
mode:
authorGravatar ChrisJL <[email protected]>2021-08-31 17:30:14 +0100
committerGravatar GitHub <[email protected]>2021-08-31 17:30:14 +0100
commitc66be4adba72c6ef79d4a1e720b4925f1c57241a (patch)
tree9be6db3d80e183cfd05963699706aac9ffc46b96 /bot/bot.py
parentMerge pull request #831 from brad90four/patch-1 (diff)
parentSnakes: make use of PLAYER_ICON_IMAGE_SIZE again (diff)
Merge pull request #835 from python-discord/discord-2.0
Migrate to Discord 2.0a0
Diffstat (limited to 'bot/bot.py')
-rw-r--r--bot/bot.py23
1 files changed, 20 insertions, 3 deletions
diff --git a/bot/bot.py b/bot/bot.py
index b8de97aa..c7b87a65 100644
--- a/bot/bot.py
+++ b/bot/bot.py
@@ -1,13 +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 Cog, when_mentioned_or
from bot import constants
@@ -45,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()
@@ -120,7 +137,7 @@ class Bot(commands.Bot):
return
if not icon:
- icon = self.user.avatar_url_as(format="png")
+ icon = self.user.display_avatar.url
embed = Embed(description=details)
embed.set_author(name=title, icon_url=icon)
@@ -203,7 +220,7 @@ loop.run_until_complete(redis_session.connect())
bot = Bot(
redis_session=redis_session,
- command_prefix=constants.Client.prefix,
+ command_prefix=when_mentioned_or(constants.Client.prefix),
activity=discord.Game(name=f"Commands: {constants.Client.prefix}help"),
allowed_mentions=discord.AllowedMentions(everyone=False, roles=_allowed_roles),
intents=_intents,