diff options
| author | Rapptz <[email protected]> | 2020-09-15 01:59:51 -0400 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2020-09-23 03:21:21 -0400 |
| commit | 8d5c05ed20af0598750d61c5b9c62f4d37e4aeb1 (patch) | |
| tree | 01f4ef33986df7c47d7676b111164f63a7e2a347 | |
| parent | Add a special exception for required privileged intents (diff) | |
| download | discord.py-8d5c05ed20af0598750d61c5b9c62f4d37e4aeb1.tar.xz discord.py-8d5c05ed20af0598750d61c5b9c62f4d37e4aeb1.zip | |
Default MemberCacheFlags based on intents
| -rw-r--r-- | discord/client.py | 2 | ||||
| -rw-r--r-- | discord/flags.py | 26 | ||||
| -rw-r--r-- | discord/state.py | 4 |
3 files changed, 30 insertions, 2 deletions
diff --git a/discord/client.py b/discord/client.py index 6be3e982..e44e5e21 100644 --- a/discord/client.py +++ b/discord/client.py @@ -147,6 +147,8 @@ class Client: .. versionadded:: 1.5 member_cache_flags: :class:`MemberCacheFlags` Allows for finer control over how the library caches members. + If not given, defaults to cache as much as possible is with the + currently selected intents. .. versionadded:: 1.5 fetch_offline_members: :class:`bool` diff --git a/discord/flags.py b/discord/flags.py index a204937c..4607b2ce 100644 --- a/discord/flags.py +++ b/discord/flags.py @@ -754,6 +754,32 @@ class MemberCacheFlags(BaseFlags): """ return 4 + @classmethod + def from_intents(cls, intents): + """A factory method that creates a :class:`MemberCacheFlags` based on + the currently selected :class:`Intents`. + + Parameters + ------------ + intents: :class:`Intents` + The intents to select from. + + Returns + --------- + :class:`MemberCacheFlags` + The resulting member cache flags. + """ + + self = cls.none() + if intents.members: + self.joined = True + if intents.presences: + self.online = True + if intents.voice_states: + self.voice = True + + return self + def _verify_intents(self, intents): if self.online and not intents.presences: raise ValueError('MemberCacheFlags.online requires Intents.presences enabled') diff --git a/discord/state.py b/discord/state.py index db47059b..22bfdcca 100644 --- a/discord/state.py +++ b/discord/state.py @@ -144,12 +144,12 @@ class ConnectionState: cache_flags = options.get('member_cache_flags', None) if cache_flags is None: - cache_flags = MemberCacheFlags.all() + cache_flags = MemberCacheFlags.from_intents(intents) else: if not isinstance(cache_flags, MemberCacheFlags): raise TypeError('member_cache_flags parameter must be MemberCacheFlags not %r' % type(cache_flags)) - cache_flags._verify_intents(intents) + cache_flags._verify_intents(intents) self._member_cache_flags = cache_flags self._activity = activity |