mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-05-17 03:09:05 +00:00
Add support for user flags in Profile.
This commit is contained in:
parent
77f04539b1
commit
25a1d8c300
@ -974,8 +974,9 @@ class Client:
|
|||||||
|
|
||||||
since = data.get('premium_since')
|
since = data.get('premium_since')
|
||||||
mutual_guilds = list(filter(None, map(transform, data.get('mutual_guilds', []))))
|
mutual_guilds = list(filter(None, map(transform, data.get('mutual_guilds', []))))
|
||||||
return Profile(premium=since is not None,
|
user = data['user']
|
||||||
|
return Profile(flags=user.get('flags', 0),
|
||||||
premium_since=utils.parse_time(since),
|
premium_since=utils.parse_time(since),
|
||||||
mutual_guilds=mutual_guilds,
|
mutual_guilds=mutual_guilds,
|
||||||
user=User(data=data['user'], state=state),
|
user=User(data=user, state=state),
|
||||||
connected_accounts=data['connected_accounts'])
|
connected_accounts=data['connected_accounts'])
|
||||||
|
@ -28,7 +28,7 @@ from enum import Enum
|
|||||||
|
|
||||||
__all__ = ['ChannelType', 'MessageType', 'VoiceRegion', 'VerificationLevel',
|
__all__ = ['ChannelType', 'MessageType', 'VoiceRegion', 'VerificationLevel',
|
||||||
'ContentFilter', 'Status', 'DefaultAvatar', 'RelationshipType',
|
'ContentFilter', 'Status', 'DefaultAvatar', 'RelationshipType',
|
||||||
'AuditLogAction', 'AuditLogActionCategory', ]
|
'AuditLogAction', 'AuditLogActionCategory', 'UserFlags', ]
|
||||||
|
|
||||||
class ChannelType(Enum):
|
class ChannelType(Enum):
|
||||||
text = 0
|
text = 0
|
||||||
@ -204,6 +204,11 @@ class AuditLogAction(Enum):
|
|||||||
elif v < 80:
|
elif v < 80:
|
||||||
return 'message'
|
return 'message'
|
||||||
|
|
||||||
|
class UserFlags(Enum):
|
||||||
|
staff = 1
|
||||||
|
partner = 2
|
||||||
|
hypesquad = 4
|
||||||
|
|
||||||
def try_enum(cls, val):
|
def try_enum(cls, val):
|
||||||
"""A function that tries to turn the value into enum ``cls``.
|
"""A function that tries to turn the value into enum ``cls``.
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ DEALINGS IN THE SOFTWARE.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from .utils import snowflake_time, _bytes_to_base64_data, parse_time
|
from .utils import snowflake_time, _bytes_to_base64_data, parse_time
|
||||||
from .enums import DefaultAvatar, RelationshipType
|
from .enums import DefaultAvatar, RelationshipType, UserFlags
|
||||||
from .errors import ClientException
|
from .errors import ClientException
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
@ -33,7 +33,31 @@ from collections import namedtuple
|
|||||||
import discord.abc
|
import discord.abc
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|
||||||
Profile = namedtuple('Profile', 'premium user mutual_guilds connected_accounts premium_since')
|
class Profile(namedtuple('Profile', 'flags user mutual_guilds connected_accounts premium_since')):
|
||||||
|
__slots__ = ()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def nitro(self):
|
||||||
|
return self.premium_since is not None
|
||||||
|
|
||||||
|
premium = nitro
|
||||||
|
|
||||||
|
def _has_flag(self, o):
|
||||||
|
v = o.value
|
||||||
|
return (self.flags & v) == v
|
||||||
|
|
||||||
|
@property
|
||||||
|
def staff(self):
|
||||||
|
return self._has_flag(UserFlags.staff)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def hypesquad(self):
|
||||||
|
return self._has_flag(UserFlags.hypesquad)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def partner(self):
|
||||||
|
return self._has_flag(UserFlags.partner)
|
||||||
|
|
||||||
|
|
||||||
_BaseUser = discord.abc.User
|
_BaseUser = discord.abc.User
|
||||||
|
|
||||||
@ -561,7 +585,7 @@ class User(BaseUser, discord.abc.Messageable):
|
|||||||
|
|
||||||
since = data.get('premium_since')
|
since = data.get('premium_since')
|
||||||
mutual_guilds = list(filter(None, map(transform, data.get('mutual_guilds', []))))
|
mutual_guilds = list(filter(None, map(transform, data.get('mutual_guilds', []))))
|
||||||
return Profile(premium=since is not None,
|
return Profile(flags=data['user'].get('flags', 0),
|
||||||
premium_since=parse_time(since),
|
premium_since=parse_time(since),
|
||||||
mutual_guilds=mutual_guilds,
|
mutual_guilds=mutual_guilds,
|
||||||
user=self,
|
user=self,
|
||||||
|
12
docs/api.rst
12
docs/api.rst
@ -596,10 +596,22 @@ Profile
|
|||||||
.. attribute:: premium
|
.. attribute:: premium
|
||||||
|
|
||||||
A boolean indicating if the user has premium (i.e. Discord Nitro).
|
A boolean indicating if the user has premium (i.e. Discord Nitro).
|
||||||
|
.. attribute:: nitro
|
||||||
|
|
||||||
|
An alias for :attr:`premium`.
|
||||||
.. attribute:: premium_since
|
.. attribute:: premium_since
|
||||||
|
|
||||||
A naive UTC datetime indicating how long the user has been premium since.
|
A naive UTC datetime indicating how long the user has been premium since.
|
||||||
This could be ``None`` if not applicable.
|
This could be ``None`` if not applicable.
|
||||||
|
.. attribute:: staff
|
||||||
|
|
||||||
|
A boolean indicating if the user is Discord Staff.
|
||||||
|
.. attribute:: partner
|
||||||
|
|
||||||
|
A boolean indicating if the user is a Discord Partner.
|
||||||
|
.. attribute:: hypesquad
|
||||||
|
|
||||||
|
A boolean indicating if the user is in Discord HypeSquad.
|
||||||
.. attribute:: mutual_guilds
|
.. attribute:: mutual_guilds
|
||||||
|
|
||||||
A list of :class:`Guild` that the :class:`ClientUser` shares with this
|
A list of :class:`Guild` that the :class:`ClientUser` shares with this
|
||||||
|
Loading…
x
Reference in New Issue
Block a user