diff options
| author | Rapptz <[email protected]> | 2021-05-04 08:51:12 -0400 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2021-06-08 07:26:22 -0400 |
| commit | a09f89cedfa0a050df37da34dd6ca2092a2cdec0 (patch) | |
| tree | 9d48cbd508e960c9f799d9812581075c40a041bb | |
| parent | Add Thread.is_news() (diff) | |
| download | discord.py-a09f89cedfa0a050df37da34dd6ca2092a2cdec0.tar.xz discord.py-a09f89cedfa0a050df37da34dd6ca2092a2cdec0.zip | |
Fix partial thread members
| -rw-r--r-- | discord/threads.py | 24 |
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'] |