Browse Source

Fix partial thread members

feature/threads
Rapptz 4 years ago
parent
commit
a09f89cedf
  1. 24
      discord/threads.py

24
discord/threads.py

@ -47,6 +47,7 @@ if TYPE_CHECKING:
from .member import Member from .member import Member
from .message import Message from .message import Message
from .abc import Snowflake from .abc import Snowflake
from .state import ConnectionState
class Thread(Messageable, Hashable): class Thread(Messageable, Hashable):
@ -131,7 +132,7 @@ class Thread(Messageable, Hashable):
) )
def __init__(self, *, guild: Guild, data: ThreadPayload): def __init__(self, *, guild: Guild, data: ThreadPayload):
self._state = guild._state self._state: ConnectionState = guild._state
self.guild = guild self.guild = guild
self._from_data(data) self._from_data(data)
@ -153,7 +154,7 @@ class Thread(Messageable, Hashable):
except KeyError: except KeyError:
self.me = None self.me = None
else: else:
self.me = ThreadMember(member, self._state) self.me = ThreadMember(self, member)
def _unroll_metadata(self, data: ThreadMetadata): def _unroll_metadata(self, data: ThreadMetadata):
self.archived = data['archived'] self.archived = data['archived']
@ -382,14 +383,25 @@ class ThreadMember(Hashable):
'joined_at', 'joined_at',
'flags', 'flags',
'_state', '_state',
'parent',
) )
def __init__(self, data: ThreadMemberPayload, state): def __init__(self, parent: Thread, data: ThreadMemberPayload):
self._state = state self.parent = parent
self._state = parent._state
self._from_data(data) self._from_data(data)
def _from_data(self, data: ThreadMemberPayload): def _from_data(self, data: ThreadMemberPayload):
self.id = int(data['user_id']) try:
self.thread_id = int(data['id']) 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.joined_at = utils.parse_time(data['join_timestamp'])
self.flags = data['flags'] self.flags = data['flags']

Loading…
Cancel
Save