diff --git a/flask_discord/configs.py b/flask_discord/configs.py index 3d89c97..df5ca91 100644 --- a/flask_discord/configs.py +++ b/flask_discord/configs.py @@ -12,3 +12,8 @@ ALL_SCOPES = [ DEFAULT_SCOPES = [ "bot", "identify", "email", "guilds", "guilds.join" ] + + +IMAGE_BASE_URL = "https://cdn.discordapp.com/" + +USER_AVATAR_BASE_URL = IMAGE_BASE_URL + "avatars/{user_id}/{avatar_hash}.png" diff --git a/flask_discord/models/__init__.py b/flask_discord/models/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/flask_discord/models/user.py b/flask_discord/models/user.py new file mode 100644 index 0000000..6e3245e --- /dev/null +++ b/flask_discord/models/user.py @@ -0,0 +1,41 @@ +from .. import configs + + +class User(object): + + def __init__(self, payload): + self._payload = payload + self.id = self._payload["id"] + self.username = self._payload["username"] + self.discriminator = self._payload["discriminator"] + self.avatar_hash = self._payload.get("avatar", self.discriminator) + self.bot = self._payload.get("bot", False) + self.mfa_enabled = self._payload.get("mfa_enabled") + self.locale = self._payload.get("locale") + self.verified = self._payload.get("verified") + self.email = self._payload.get("email") + self.flags = self._payload.get("flags") + self.premium_type = self._payload.get("premium_type") + + def __str__(self): + return f"{self.name}#{self.discriminator}" + + @property + def name(self): + return self.username + + @property + def avatar_url(self): + return configs.USER_AVATAR_BASE_URL.format(user_id=self.id, avatar_hash=self.avatar_hash) + + @property + def is_avatar_animated(self): + return self.avatar_hash.startswith("a_") + + def to_json(self): + return self._payload + + +class Bot(User): + + pass