mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-06-07 12:18:59 +00:00
Default MemberCacheFlags based on intents
This commit is contained in:
parent
bf8ca58996
commit
8d5c05ed20
@ -147,6 +147,8 @@ class Client:
|
|||||||
.. versionadded:: 1.5
|
.. versionadded:: 1.5
|
||||||
member_cache_flags: :class:`MemberCacheFlags`
|
member_cache_flags: :class:`MemberCacheFlags`
|
||||||
Allows for finer control over how the library caches members.
|
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
|
.. versionadded:: 1.5
|
||||||
fetch_offline_members: :class:`bool`
|
fetch_offline_members: :class:`bool`
|
||||||
|
@ -754,6 +754,32 @@ class MemberCacheFlags(BaseFlags):
|
|||||||
"""
|
"""
|
||||||
return 4
|
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):
|
def _verify_intents(self, intents):
|
||||||
if self.online and not intents.presences:
|
if self.online and not intents.presences:
|
||||||
raise ValueError('MemberCacheFlags.online requires Intents.presences enabled')
|
raise ValueError('MemberCacheFlags.online requires Intents.presences enabled')
|
||||||
|
@ -144,7 +144,7 @@ class ConnectionState:
|
|||||||
|
|
||||||
cache_flags = options.get('member_cache_flags', None)
|
cache_flags = options.get('member_cache_flags', None)
|
||||||
if cache_flags is None:
|
if cache_flags is None:
|
||||||
cache_flags = MemberCacheFlags.all()
|
cache_flags = MemberCacheFlags.from_intents(intents)
|
||||||
else:
|
else:
|
||||||
if not isinstance(cache_flags, MemberCacheFlags):
|
if not isinstance(cache_flags, MemberCacheFlags):
|
||||||
raise TypeError('member_cache_flags parameter must be MemberCacheFlags not %r' % type(cache_flags))
|
raise TypeError('member_cache_flags parameter must be MemberCacheFlags not %r' % type(cache_flags))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user