aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLilly Rose Berner <[email protected]>2021-06-29 01:03:59 +0200
committerGitHub <[email protected]>2021-06-28 19:03:59 -0400
commit6b1d46a1eac4a6fcd2607c50fda02ddb10a330a8 (patch)
treec77ca044866ca1ba9cb639cafd2ade8538ec41b0
parentDispatch thread_join when a thread is updated but not in cache (diff)
downloaddiscord.py-6b1d46a1eac4a6fcd2607c50fda02ddb10a330a8.tar.xz
discord.py-6b1d46a1eac4a6fcd2607c50fda02ddb10a330a8.zip
Set Message.guild from guild_id if unavailable through Message.channel
-rw-r--r--discord/message.py22
-rw-r--r--discord/state.py2
2 files changed, 11 insertions, 13 deletions
diff --git a/discord/message.py b/discord/message.py
index 3f5df3bd..7d6cdaa0 100644
--- a/discord/message.py
+++ b/discord/message.py
@@ -590,6 +590,8 @@ class Message(Hashable):
A list of components in the message.
.. versionadded:: 2.0
+ guild: Optional[:class:`Guild`]
+ The guild that the message belongs to, if applicable.
"""
__slots__ = (
@@ -601,7 +603,6 @@ class Message(Hashable):
'_cs_raw_channel_mentions',
'_cs_raw_role_mentions',
'_cs_system_content',
- '_cs_guild',
'tts',
'content',
'channel',
@@ -623,6 +624,7 @@ class Message(Hashable):
'activity',
'stickers',
'components',
+ 'guild',
)
if TYPE_CHECKING:
@@ -657,6 +659,11 @@ class Message(Hashable):
self.components = [_component_factory(d) for d in data.get('components', [])]
try:
+ self.guild = channel.guild
+ except AttributeError:
+ self.guild = state._get_guild(utils._get_as_snowflake(data, 'guild_id'))
+
+ try:
ref = data['message_reference']
except KeyError:
self.reference = None
@@ -851,19 +858,10 @@ 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, Thread, DMChannel, GroupChannel]) -> None:
+ def _rebind_cached_references(self, new_guild: Guild, new_channel: Union[TextChannel, Thread]) -> None:
+ self.guild = new_guild
self.channel = new_channel
- try:
- del self._cs_guild # type: ignore
- except AttributeError:
- pass
-
- @utils.cached_slot_property('_cs_guild')
- def guild(self) -> Optional[Guild]:
- """Optional[:class:`Guild`]: The guild that the message belongs to, if applicable."""
- return getattr(self.channel, 'guild', None)
-
@utils.cached_slot_property('_cs_raw_mentions')
def raw_mentions(self) -> List[int]:
"""List[:class:`int`]: A property that returns an array of user IDs matched with
diff --git a/discord/state.py b/discord/state.py
index e87d1ab1..3afee473 100644
--- a/discord/state.py
+++ b/discord/state.py
@@ -1277,7 +1277,7 @@ class AutoShardedConnectionState(ConnectionState):
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 new_guild.get_thread(channel_id) or Object(id=channel_id)
- msg._rebind_channel_reference(channel)
+ msg._rebind_cached_references(new_guild, channel)
async def chunker(self, guild_id, query='', limit=0, presences=False, *, shard_id=None, nonce=None):
ws = self._get_websocket(guild_id, shard_id=shard_id)