aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRapptz <[email protected]>2016-02-14 21:49:34 -0500
committerRapptz <[email protected]>2016-02-14 21:49:34 -0500
commit4584c68f0ca48a1bac7d1fdd0ced7e947fb9da60 (patch)
treeafec05342717b3b57d0b380ad3adbfb2f7916ad1
parentUpdate owner references when we get a chunk. (diff)
downloaddiscord.py-4584c68f0ca48a1bac7d1fdd0ced7e947fb9da60.tar.xz
discord.py-4584c68f0ca48a1bac7d1fdd0ced7e947fb9da60.zip
Remove request_offline option.
-rw-r--r--discord/client.py15
-rw-r--r--discord/server.py6
-rw-r--r--discord/state.py17
-rw-r--r--docs/api.rst4
4 files changed, 19 insertions, 23 deletions
diff --git a/discord/client.py b/discord/client.py
index fa096c98..b9ca6c0e 100644
--- a/discord/client.py
+++ b/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
diff --git a/discord/server.py b/discord/server.py
index 07ccbbdb..dfad0761 100644
--- a/discord/server.py
+++ b/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')
diff --git a/discord/state.py b/discord/state.py
index bcb90e72..f016cb2d 100644
--- a/discord/state.py
+++ b/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
diff --git a/docs/api.rst b/docs/api.rst
index a7140895..111a1ee1 100644
--- a/docs/api.rst
+++ b/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