1
0
mirror of https://github.com/Rapptz/discord.py.git synced 2025-05-10 15:59:50 +00:00

Add Server.member_count property for actual member count.

This will always work regardless of chunking or not.
This commit is contained in:
Rapptz 2016-02-13 22:08:13 -05:00
parent baf1312d0e
commit 7b135725bc
2 changed files with 10 additions and 1 deletions

@ -86,7 +86,7 @@ class Server(Hashable):
__slots__ = [ 'afk_timeout', 'afk_channel', '_members', '_channels', 'icon',
'name', 'id', 'owner', 'unavailable', 'name', 'me', 'region',
'_default_role', '_default_channel', 'roles' ]
'_default_role', '_default_channel', 'roles', '_member_count']
def __init__(self, **kwargs):
self._channels = {}
@ -136,6 +136,8 @@ class Server(Hashable):
return before, member
def _from_data(self, guild):
# according to Stan, this is always available even if the guild is unavailable
self._member_count = guild['member_count']
self.name = guild.get('name')
self.region = guild.get('region')
try:
@ -204,3 +206,8 @@ class Server(Hashable):
if self.icon is None:
return ''
return 'https://cdn.discordapp.com/icons/{0.id}/{0.icon}.jpg'.format(self)
@property
def member_count(self):
"""Returns the true member count regardless of it being loaded fully or not."""
return self._member_count

@ -204,6 +204,7 @@ class ConnectionState:
data['roles'] = roles
member = Member(server=server, **data)
server._add_member(member)
server._member_count += 1
self.dispatch('member_join', member)
def parse_guild_member_remove(self, data):
@ -213,6 +214,7 @@ class ConnectionState:
member = server.get_member(user_id)
if member is not None:
server._remove_member(member)
server._member_count -= 1
self.dispatch('member_remove', member)
def parse_guild_member_update(self, data):