aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Izan <[email protected]>2022-02-14 10:45:57 +0000
committerGravatar Izan <[email protected]>2022-02-14 10:45:57 +0000
commitc62a52e8e45e527bd3ec6404525964d6ccd79ddd (patch)
tree7f98bbfffdf9d0104154ec13a33b39a4836c3185
parentRemoved extra newline in the traceback tag. (#2083) (diff)
Allow duckifying of messages in threads
-rw-r--r--bot/exts/fun/duck_pond.py16
1 files changed, 11 insertions, 5 deletions
diff --git a/bot/exts/fun/duck_pond.py b/bot/exts/fun/duck_pond.py
index c51656343..8968c766d 100644
--- a/bot/exts/fun/duck_pond.py
+++ b/bot/exts/fun/duck_pond.py
@@ -2,7 +2,7 @@ import asyncio
from typing import Union
import discord
-from discord import Color, Embed, Message, RawReactionActionEvent, TextChannel, errors
+from discord import Color, Embed, Message, RawReactionActionEvent, TextChannel, Thread, errors
from discord.ext.commands import Cog, Context, command
from bot import constants
@@ -47,14 +47,18 @@ class DuckPond(Cog):
return False
@staticmethod
- def is_helper_viewable(channel: TextChannel) -> bool:
+ def is_helper_viewable(channel: Union[TextChannel, Thread]) -> bool:
"""Check if helpers can view a specific channel."""
guild = channel.guild
helper_role = guild.get_role(constants.Roles.helpers)
# check channel overwrites for both the Helper role and @everyone and
# return True for channels that they have permissions to view.
- helper_overwrites = channel.overwrites_for(helper_role)
- default_overwrites = channel.overwrites_for(guild.default_role)
+ if isinstance(channel, Thread):
+ helper_overwrites = channel.permissions_for(helper_role)
+ default_overwrites = channel.permissions_for(guild.default_role)
+ else:
+ helper_overwrites = channel.overwrites_for(helper_role)
+ default_overwrites = channel.overwrites_for(guild.default_role)
return default_overwrites.view_channel is None or helper_overwrites.view_channel is True
async def has_green_checkmark(self, message: Message) -> bool:
@@ -165,7 +169,9 @@ class DuckPond(Cog):
if not self._payload_has_duckpond_emoji(payload.emoji):
return
- channel = discord.utils.get(self.bot.get_all_channels(), id=payload.channel_id)
+ await self.bot.wait_until_guild_available()
+ guild = self.bot.get_guild(payload.guild_id)
+ channel = discord.utils.get(guild.text_channels + guild.threads, id=payload.channel_id)
if channel is None:
return