diff options
Diffstat (limited to 'discord/state.py')
| -rw-r--r-- | discord/state.py | 16 |
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: |