aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRapptz <[email protected]>2021-05-04 08:51:12 -0400
committerRapptz <[email protected]>2021-06-08 07:26:22 -0400
commita09f89cedfa0a050df37da34dd6ca2092a2cdec0 (patch)
tree9d48cbd508e960c9f799d9812581075c40a041bb
parentAdd Thread.is_news() (diff)
downloaddiscord.py-a09f89cedfa0a050df37da34dd6ca2092a2cdec0.tar.xz
discord.py-a09f89cedfa0a050df37da34dd6ca2092a2cdec0.zip
Fix partial thread members
-rw-r--r--discord/threads.py24
1 files changed, 18 insertions, 6 deletions
diff --git a/discord/threads.py b/discord/threads.py
index ab022eeb..53c72d7a 100644
--- a/discord/threads.py
+++ b/discord/threads.py
@@ -47,6 +47,7 @@ if TYPE_CHECKING:
from .member import Member
from .message import Message
from .abc import Snowflake
+ from .state import ConnectionState
class Thread(Messageable, Hashable):
@@ -131,7 +132,7 @@ class Thread(Messageable, Hashable):
)
def __init__(self, *, guild: Guild, data: ThreadPayload):
- self._state = guild._state
+ self._state: ConnectionState = guild._state
self.guild = guild
self._from_data(data)
@@ -153,7 +154,7 @@ class Thread(Messageable, Hashable):
except KeyError:
self.me = None
else:
- self.me = ThreadMember(member, self._state)
+ self.me = ThreadMember(self, member)
def _unroll_metadata(self, data: ThreadMetadata):
self.archived = data['archived']
@@ -382,14 +383,25 @@ class ThreadMember(Hashable):
'joined_at',
'flags',
'_state',
+ 'parent',
)
- def __init__(self, data: ThreadMemberPayload, state):
- self._state = state
+ def __init__(self, parent: Thread, data: ThreadMemberPayload):
+ self.parent = parent
+ self._state = parent._state
self._from_data(data)
def _from_data(self, data: ThreadMemberPayload):
- self.id = int(data['user_id'])
- self.thread_id = int(data['id'])
+ try:
+ self.id = int(data['user_id'])
+ except KeyError:
+ assert self._state.self_id is not None
+ self.id = self._state.self_id
+
+ try:
+ self.thread_id = int(data['id'])
+ except KeyError:
+ self.thread_id = self.parent.id
+
self.joined_at = utils.parse_time(data['join_timestamp'])
self.flags = data['flags']