Browse Source

Remove request_offline option.

pull/105/head
Rapptz 9 years ago
parent
commit
4584c68f0c
  1. 15
      discord/client.py
  2. 6
      discord/server.py
  3. 17
      discord/state.py
  4. 4
      docs/api.rst

15
discord/client.py

@ -81,10 +81,6 @@ class Client:
Indicates if :meth:`login` should cache the authentication tokens. Defaults
to ``True``. The method in which the cache is written is done by writing to
disk to a temporary directory.
request_offline : Optional[bool]
Indicates if the client should request the offline members of every server.
If this is False, then member lists will not store offline members if the
number of members in the server is greater than 250. Defaults to ``True``.
Attributes
-----------
@ -121,7 +117,6 @@ class Client:
self.loop = asyncio.get_event_loop() if loop is None else loop
self._listeners = []
self.cache_auth = options.get('cache_auth', True)
self.request_offline = options.get('request_offline', True)
max_messages = options.get('max_messages')
if max_messages is None or max_messages < 100:
@ -396,10 +391,7 @@ class Client:
func(data)
if is_ready:
if self.request_offline:
utils.create_task(self._fill_offline(), loop=self.loop)
else:
self.dispatch('ready')
utils.create_task(self._fill_offline(), loop=self.loop)
@asyncio.coroutine
def _make_websocket(self, initial=True):
@ -1258,9 +1250,8 @@ class Client:
"""|coro|
Requests previously offline members from the server to be filled up
into the :attr:`Server.members` cache. If the client was initialised
with ``request_offline`` as ``True`` then calling this function would
not do anything.
into the :attr:`Server.members` cache. This function is usually not
called.
When the client logs on and connects to the websocket, Discord does
not provide the library with offline members if the number of members

6
discord/server.py

@ -138,7 +138,11 @@ class Server(Hashable):
def _from_data(self, guild):
# according to Stan, this is always available even if the guild is unavailable
self._member_count = guild['member_count']
# I don't have this guarantee when someone updates the server.
member_count = guild.get('member_count', None)
if member_count:
self._member_count = member_count
self.name = guild.get('name')
self.large = guild.get('large', self._member_count > 250)
self.region = guild.get('region')

17
discord/state.py

@ -175,10 +175,7 @@ class ConnectionState:
member_id = user['id']
member = server.get_member(member_id)
if member is None:
# if the member is not in cache then it's being "lazily"
# loaded due to large_threshold so we need to add it into
# the cache and then update that instead.
member = self._add_member(server, data)
member = self._make_member(server, data)
old_member = copy.copy(member)
member.status = data.get('status')
@ -232,7 +229,7 @@ class ConnectionState:
self.dispatch('channel_create', channel)
def _add_member(self, server, data):
def _make_member(self, server, data):
roles = [server.default_role]
for roleid in data.get('roles', []):
role = utils.get(server.roles, id=roleid)
@ -240,13 +237,12 @@ class ConnectionState:
roles.append(role)
data['roles'] = roles
member = Member(server=server, **data)
server._add_member(member)
return member
return Member(server=server, **data)
def parse_guild_member_add(self, data):
server = self._get_server(data.get('guild_id'))
member = self._add_member(server, data)
member = self._make_member(server, data)
server._add_member(member)
server._member_count += 1
self.dispatch('member_join', member)
@ -382,7 +378,8 @@ class ConnectionState:
server = self._get_server(data.get('guild_id'))
members = data.get('members', [])
for member in members:
self._add_member(server, member)
m = self._make_member(server, member)
server._add_member(m)
# if the owner is offline, server.owner is potentially None
# therefore we should check if this chunk makes it point to a valid

4
docs/api.rst

@ -105,6 +105,10 @@ to handle it, which defaults to print a traceback and ignore the exception.
Called when the client is done preparing the data received from Discord. Usually after login is successful
and the :attr:`Client.servers` and co. are filled up.
.. warning::
This function is not guaranteed to be the first event called.
.. function:: on_error(event, \*args, \*\*kwargs)
Usually when an event raises an uncaught exception, a traceback is

Loading…
Cancel
Save