diff options
| author | cookie <[email protected]> | 2016-06-26 14:43:28 -0400 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2016-06-26 14:47:16 -0400 |
| commit | abf9be5f7db79cbfab6d4502fa15ba72975059dd (patch) | |
| tree | b92dd6c72f00ee84a9ff607daa09a38d022e1dcf | |
| parent | Document that bot users can't use Client.accept_invite (diff) | |
| download | discord.py-abf9be5f7db79cbfab6d4502fa15ba72975059dd.tar.xz discord.py-abf9be5f7db79cbfab6d4502fa15ba72975059dd.zip | |
Guild Sharding support
| -rw-r--r-- | discord/client.py | 6 | ||||
| -rw-r--r-- | discord/gateway.py | 5 |
2 files changed, 11 insertions, 0 deletions
diff --git a/discord/client.py b/discord/client.py index ebea8ec4..5ab263cd 100644 --- a/discord/client.py +++ b/discord/client.py @@ -101,6 +101,10 @@ class Client: connector : aiohttp.BaseConnector The `connector`_ to use for connection pooling. Useful for proxies, e.g. with a `ProxyConnector`_. + shard_id : Optional[int] + Integer starting at 0 and less than shard_count. + shard_count : Optional[int] + The total number of shards. Attributes ----------- @@ -133,6 +137,8 @@ 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.shard_id = options.get('shard_id') + self.shard_count = options.get('shard_count') max_messages = options.get('max_messages') if max_messages is None or max_messages < 100: diff --git a/discord/gateway.py b/discord/gateway.py index c605cb95..ade93991 100644 --- a/discord/gateway.py +++ b/discord/gateway.py @@ -178,6 +178,8 @@ class DiscordWebSocket(websockets.client.WebSocketClientProtocol): ws._connection = client.connection ws._dispatch = client.dispatch ws.gateway = gateway + ws.shard_id = client.shard_id + ws.shard_count = client.shard_count client.connection._update_references(ws) @@ -250,6 +252,9 @@ class DiscordWebSocket(websockets.client.WebSocketClientProtocol): if not self._connection.is_bot: payload['d']['synced_guilds'] = [] + if self.shard_id is not None and self.shard_count is not None: + payload['d']['shard'] = [self.shard_id, self.shard_count] + yield from self.send_as_json(payload) @asyncio.coroutine |