aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--discord/client.py6
-rw-r--r--discord/gateway.py5
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