Browse Source

Allow Message.channel to be a thread

feature/threads
Rapptz 4 years ago
parent
commit
ac95b8b85b
  1. 4
      discord/guild.py
  2. 9
      discord/message.py
  3. 4
      discord/state.py

4
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`

9
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:

4
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):

Loading…
Cancel
Save