|
@ -494,18 +494,16 @@ class ClientStatus: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Presence: |
|
|
class Presence: |
|
|
__slots__ = ('client_status', 'activities', 'last_modified') |
|
|
__slots__ = ('client_status', 'activities') |
|
|
|
|
|
|
|
|
def __init__(self, data: gw.BasePresenceUpdate, state: ConnectionState, /) -> None: |
|
|
def __init__(self, data: gw.BasePresenceUpdate, state: ConnectionState, /) -> None: |
|
|
self.client_status: ClientStatus = ClientStatus(data['status'], data.get('client_status')) |
|
|
self.client_status: ClientStatus = ClientStatus(data['status'], data.get('client_status')) |
|
|
self.activities: Tuple[ActivityTypes, ...] = tuple(create_activity(d, state) for d in data['activities']) |
|
|
self.activities: Tuple[ActivityTypes, ...] = tuple(create_activity(d, state) for d in data['activities']) |
|
|
self.last_modified: Optional[datetime.datetime] = utils.parse_timestamp(data.get('last_modified')) |
|
|
|
|
|
|
|
|
|
|
|
def __repr__(self) -> str: |
|
|
def __repr__(self) -> str: |
|
|
attrs = [ |
|
|
attrs = [ |
|
|
('client_status', self.client_status), |
|
|
('client_status', self.client_status), |
|
|
('activities', self.activities), |
|
|
('activities', self.activities), |
|
|
('last_modified', self.last_modified), |
|
|
|
|
|
] |
|
|
] |
|
|
inner = ' '.join('%s=%r' % t for t in attrs) |
|
|
inner = ' '.join('%s=%r' % t for t in attrs) |
|
|
return f'<{self.__class__.__name__} {inner}>' |
|
|
return f'<{self.__class__.__name__} {inner}>' |
|
@ -523,14 +521,12 @@ class Presence: |
|
|
def _update(self, data: gw.BasePresenceUpdate, state: ConnectionState, /) -> None: |
|
|
def _update(self, data: gw.BasePresenceUpdate, state: ConnectionState, /) -> None: |
|
|
self.client_status._update(data['status'], data.get('client_status')) |
|
|
self.client_status._update(data['status'], data.get('client_status')) |
|
|
self.activities = tuple(create_activity(d, state) for d in data['activities']) |
|
|
self.activities = tuple(create_activity(d, state) for d in data['activities']) |
|
|
self.last_modified = utils.parse_timestamp(data.get('last_modified')) or utils.utcnow() |
|
|
|
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
def _offline(cls) -> Self: |
|
|
def _offline(cls) -> Self: |
|
|
self = cls.__new__(cls) # bypass __init__ |
|
|
self = cls.__new__(cls) # bypass __init__ |
|
|
self.client_status = ClientStatus() |
|
|
self.client_status = ClientStatus() |
|
|
self.activities = () |
|
|
self.activities = () |
|
|
self.last_modified = None |
|
|
|
|
|
return self |
|
|
return self |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
@ -538,7 +534,6 @@ class Presence: |
|
|
self = cls.__new__(cls) # bypass __init__ |
|
|
self = cls.__new__(cls) # bypass __init__ |
|
|
self.client_status = ClientStatus._copy(presence.client_status) |
|
|
self.client_status = ClientStatus._copy(presence.client_status) |
|
|
self.activities = presence.activities |
|
|
self.activities = presence.activities |
|
|
self.last_modified = presence.last_modified |
|
|
|
|
|
return self |
|
|
return self |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -562,10 +557,6 @@ class FakeClientPresence(Presence): |
|
|
def activities(self) -> Tuple[ActivityTypes, ...]: |
|
|
def activities(self) -> Tuple[ActivityTypes, ...]: |
|
|
return getattr(self._state.current_session, 'activities', ()) |
|
|
return getattr(self._state.current_session, 'activities', ()) |
|
|
|
|
|
|
|
|
@property |
|
|
|
|
|
def last_modified(self) -> Optional[datetime.datetime]: |
|
|
|
|
|
return None |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def logging_coroutine(coroutine: Coroutine[Any, Any, T], *, info: str) -> Optional[T]: |
|
|
async def logging_coroutine(coroutine: Coroutine[Any, Any, T], *, info: str) -> Optional[T]: |
|
|
try: |
|
|
try: |
|
|