diff --git a/discord/guild.py b/discord/guild.py index c373cb528..25e7d402c 100644 --- a/discord/guild.py +++ b/discord/guild.py @@ -493,6 +493,10 @@ class Guild(Hashable): def get_channel(self, channel_id): """Returns a channel with the given ID. + .. note:: + + This does *not* search for threads. + Parameters ----------- channel_id: :class:`int` diff --git a/discord/message.py b/discord/message.py index dc240d296..06d7157e5 100644 --- a/discord/message.py +++ b/discord/message.py @@ -80,6 +80,7 @@ __all__ = ( 'DeletedReferencedMessage', ) + def convert_emoji_reaction(emoji): if isinstance(emoji, Reaction): emoji = emoji.emoji @@ -513,8 +514,8 @@ class Message(Hashable): This is not stored long term within Discord's servers and is only used ephemerally. embeds: List[:class:`Embed`] A list of embeds the message has. - channel: Union[:class:`TextChannel`, :class:`DMChannel`, :class:`GroupChannel`] - The :class:`TextChannel` that the message was sent from. + channel: Union[:class:`TextChannel`, :class:`Thread`, :class:`DMChannel`, :class:`GroupChannel`] + The :class:`TextChannel` or :class:`Thread` that the message was sent from. Could be a :class:`DMChannel` or :class:`GroupChannel` if it's a private message. reference: Optional[:class:`~discord.MessageReference`] The message that this message references. This is only applicable to messages of @@ -632,7 +633,7 @@ class Message(Hashable): self, *, state: ConnectionState, - channel: Union[TextChannel, DMChannel, GroupChannel], + channel: Union[TextChannel, Thread, DMChannel, GroupChannel], data: MessagePayload, ): self._state = state @@ -850,7 +851,7 @@ class Message(Hashable): def _handle_components(self, components: List[ComponentPayload]): self.components = [_component_factory(d) for d in components] - def _rebind_channel_reference(self, new_channel: Union[TextChannel, DMChannel, GroupChannel]) -> None: + def _rebind_channel_reference(self, new_channel: Union[TextChannel, Thread, DMChannel, GroupChannel]) -> None: self.channel = new_channel try: diff --git a/discord/state.py b/discord/state.py index 7c1183d7a..e9e4fa4d0 100644 --- a/discord/state.py +++ b/discord/state.py @@ -380,7 +380,7 @@ class ConnectionState: channel = DMChannel._from_message(self, channel_id) guild = None else: - channel = guild and guild.get_channel(channel_id) + channel = guild and (guild.get_channel(channel_id) or guild.get_thread(channel_id)) return channel or Object(id=channel_id), guild @@ -1181,7 +1181,7 @@ class AutoShardedConnectionState(ConnectionState): new_guild = self._get_guild(msg.guild.id) if new_guild is not None and new_guild is not msg.guild: channel_id = msg.channel.id - channel = new_guild.get_channel(channel_id) or Object(id=channel_id) + channel = new_guild.get_channel(channel_id) or new_guild.get_thread(channel_id) or Object(id=channel_id) msg._rebind_channel_reference(channel) async def chunker(self, guild_id, query='', limit=0, presences=False, *, shard_id=None, nonce=None):