Fix partial thread members
This commit is contained in:
parent
c6d09a8bfa
commit
a09f89cedf
@ -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…
x
Reference in New Issue
Block a user