aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--discord/client.py24
-rw-r--r--discord/gateway.py1
-rw-r--r--discord/state.py1
3 files changed, 26 insertions, 0 deletions
diff --git a/discord/client.py b/discord/client.py
index e4804594..731f4b31 100644
--- a/discord/client.py
+++ b/discord/client.py
@@ -152,6 +152,30 @@ class Client:
WebSocket in the case of not receiving a HEARTBEAT_ACK. Useful if
processing the initial packets take too long to the point of disconnecting
you. The default timeout is 60 seconds.
+ guild_subscriptions: :class:`bool`
+ Whether to dispatching of presence or typing events. Defaults to ``True``.
+
+ .. warning::
+
+ If this is set to ``False`` then the following features will be disabled:
+
+ - No user related updates (:func:`on_user_update` will not dispatch)
+ - No presence related changes will be recorded (e.g. :attr:`Member.activities` or :attr:`Member.status`)
+ - If ``fetch_offline_members`` is set to ``False`` then the user cache will not exist.
+ This makes it difficult or impossible to do many things, for example:
+
+ - Computing permissions
+ - Querying members in a voice channel via :attr:`VoiceChannel.members` will be empty.
+ - Most forms of receiving :class:`Member` will be
+ receiving :class:`User` instead, except for message events.
+ - :attr:`Guild.owner` will usually resolve to ``None``.
+ - :meth:`Guild.get_member` will usually be unavailable.
+ - Anything that involves using :class:`Member`.
+ - :attr:`users` will not be as populated.
+ - etc.
+
+ In short, this makes it so the only member you can reliably query is the
+ message author. Useful for bots that do not require any state.
Attributes
-----------
diff --git a/discord/gateway.py b/discord/gateway.py
index 361e1a69..7d71425b 100644
--- a/discord/gateway.py
+++ b/discord/gateway.py
@@ -297,6 +297,7 @@ class DiscordWebSocket(websockets.client.WebSocketClientProtocol):
},
'compress': True,
'large_threshold': 250,
+ 'guild_subscriptions': self._connection.guild_subscriptions,
'v': 3
}
}
diff --git a/discord/state.py b/discord/state.py
index a974b163..0b6c564f 100644
--- a/discord/state.py
+++ b/discord/state.py
@@ -70,6 +70,7 @@ class ConnectionState:
self._ready_task = None
self._fetch_offline = options.get('fetch_offline_members', True)
self.heartbeat_timeout = options.get('heartbeat_timeout', 60.0)
+ self.guild_subscriptions = options.get('guild_subscriptions', True)
self._listeners = []
activity = options.get('activity', None)