Browse Source

Parse and expose friend suggestion count

pull/10109/head
dolfies 2 years ago
parent
commit
2ccf7108de
  1. 8
      discord/client.py
  2. 4
      discord/state.py
  3. 2
      discord/types/gateway.py

8
discord/client.py

@ -504,6 +504,14 @@ class Client:
"""
return [read_state for group in self._connection._read_states.values() for read_state in group.values()]
@property
def friend_suggestion_count(self) -> int:
""":class:`int`: The number of friend suggestions that the connected client has.
.. versionadded:: 2.1
"""
return self._connection.friend_suggestion_count
def is_ready(self) -> bool:
""":class:`bool`: Specifies if the client's internal cache is ready for use."""
return self._ready is not MISSING and self._ready.is_set()

4
discord/state.py

@ -611,6 +611,7 @@ class ConnectionState:
self.session_type: Optional[str] = None
self.auth_session_id: Optional[str] = None
self.required_action: Optional[RequiredActionType] = None
self.friend_suggestion_count: int = 0
self._emojis: Dict[int, Emoji] = {}
self._stickers: Dict[int, GuildSticker] = {}
self._guilds: Dict[int, Guild] = {}
@ -1057,6 +1058,7 @@ class ConnectionState:
self.connections = {c['id']: Connection(state=self, data=c) for c in data.get('connected_accounts', [])}
self.pending_payments = {int(p['id']): Payment(state=self, data=p) for p in data.get('pending_payments', [])}
self.required_action = try_enum(RequiredActionType, data['required_action']) if 'required_action' in data else None
self.friend_suggestion_count = data.get('friend_suggestion_count', 0)
if 'sessions' in data:
self.parse_sessions_replace(data['sessions'], from_ready=True)
@ -2747,9 +2749,11 @@ class ConnectionState:
self.dispatch('relationship_update', old, new)
def parse_friend_suggestion_create(self, data: gw.FriendSuggestionCreateEvent):
self.friend_suggestion_count += 1
self.dispatch('friend_suggestion_add', FriendSuggestion(state=self, data=data))
def parse_friend_suggestion_delete(self, data: gw.FriendSuggestionDeleteEvent):
self.friend_suggestion_count -= 1
user_id = int(data['suggested_user_id'])
user = self.get_user(user_id)
if user:

2
discord/types/gateway.py

@ -130,6 +130,7 @@ class ReadySupplementalEvent(TypedDict):
guilds: List[SupplementalGuild]
merged_members: List[List[MemberWithUser]]
merged_presences: MergedPresences
lazy_private_channels: List[Union[DMChannel, GroupDMChannel]]
class VersionedReadState(TypedDict):
@ -140,6 +141,7 @@ class VersionedReadState(TypedDict):
NoEvent = Literal[None]
MessageCreateEvent = Message

Loading…
Cancel
Save