aboutsummaryrefslogtreecommitdiff
path: root/discord/state.py
diff options
context:
space:
mode:
Diffstat (limited to 'discord/state.py')
-rw-r--r--discord/state.py16
1 files changed, 13 insertions, 3 deletions
diff --git a/discord/state.py b/discord/state.py
index 17bc5d2c..681da885 100644
--- a/discord/state.py
+++ b/discord/state.py
@@ -49,11 +49,13 @@ log = logging.getLogger(__name__)
ReadyState = namedtuple('ReadyState', ('launch', 'servers'))
class ConnectionState:
- def __init__(self, dispatch, chunker, max_messages, *, loop):
+ def __init__(self, dispatch, chunker, syncer, max_messages, *, loop):
self.loop = loop
self.max_messages = max_messages
self.dispatch = dispatch
self.chunker = chunker
+ self.syncer = syncer
+ self.is_bot = None
self._listeners = []
self.clear()
@@ -165,8 +167,9 @@ class ConnectionState:
launch.set()
yield from asyncio.sleep(2)
- # get all the chunks
servers = self._ready_state.servers
+
+ # get all the chunks
chunks = []
for server in servers:
chunks.extend(self.chunks_needed(server))
@@ -194,9 +197,12 @@ class ConnectionState:
servers = self._ready_state.servers
for guild in guilds:
server = self._add_server_from_data(guild)
- if server.large:
+ if server.large or not self.is_bot:
servers.append(server)
+ if not self.is_bot:
+ compat.create_task(self.syncer([s.id for s in self.servers]), loop=self.loop)
+
for pm in data.get('private_channels'):
self._add_private_channel(PrivateChannel(id=pm['id'],
user=User(**pm['recipient'])))
@@ -427,6 +433,10 @@ class ConnectionState:
else:
self.dispatch('server_join', server)
+ def parse_guild_sync(self, data):
+ server = self._get_server(data.get('id'))
+ server._sync(data)
+
def parse_guild_update(self, data):
server = self._get_server(data.get('id'))
if server is not None: