aboutsummaryrefslogtreecommitdiff
path: root/discord/user.py
diff options
context:
space:
mode:
Diffstat (limited to 'discord/user.py')
-rw-r--r--discord/user.py30
1 files changed, 27 insertions, 3 deletions
diff --git a/discord/user.py b/discord/user.py
index 634e821c..cecd1c51 100644
--- a/discord/user.py
+++ b/discord/user.py
@@ -25,7 +25,7 @@ DEALINGS IN THE SOFTWARE.
"""
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 collections import namedtuple
@@ -33,7 +33,31 @@ from collections import namedtuple
import discord.abc
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
@@ -561,7 +585,7 @@ class User(BaseUser, discord.abc.Messageable):
since = data.get('premium_since')
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),
mutual_guilds=mutual_guilds,
user=self,