Browse Source

Default MemberCacheFlags based on intents

pull/5849/head
Rapptz 5 years ago
parent
commit
8d5c05ed20
  1. 2
      discord/client.py
  2. 26
      discord/flags.py
  3. 4
      discord/state.py

2
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`

26
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')

4
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

Loading…
Cancel
Save