From 73d81745334c425dbb4e49d20aed3c2756cf5a71 Mon Sep 17 00:00:00 2001 From: thecosmos Date: Fri, 22 Nov 2019 00:56:33 +0530 Subject: [PATCH 1/9] Add support for animated avatars --- flask_discord/configs.py | 5 +++-- flask_discord/models/user.py | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/flask_discord/configs.py b/flask_discord/configs.py index 04639b6..fc0c1e2 100644 --- a/flask_discord/configs.py +++ b/flask_discord/configs.py @@ -15,6 +15,7 @@ DEFAULT_SCOPES = [ IMAGE_BASE_URL = "https://cdn.discordapp.com/" - -USER_AVATAR_BASE_URL = IMAGE_BASE_URL + "avatars/{user_id}/{avatar_hash}.png" +IMAGE_FORMAT = "png" +ANIMATED_IMAGE_FORMAT = "gif" +USER_AVATAR_BASE_URL = IMAGE_BASE_URL + "avatars/{user_id}/{avatar_hash}.{format}" GUILD_ICON_BASE_URL = IMAGE_BASE_URL + "icons/{guild_id}/{icon_hash}.png" diff --git a/flask_discord/models/user.py b/flask_discord/models/user.py index bc061ed..2442a52 100644 --- a/flask_discord/models/user.py +++ b/flask_discord/models/user.py @@ -60,7 +60,8 @@ class User(DiscordModelsBase): @property def avatar_url(self): """A property returning direct URL to user's avatar.""" - return configs.USER_AVATAR_BASE_URL.format(user_id=self.id, avatar_hash=self.avatar_hash) + image_format = configs.ANIMATED_IMAGE_FORMAT if self.is_avatar_animated else configs.IMAGE_FORMAT + return configs.USER_AVATAR_BASE_URL.format(user_id=self.id, avatar_hash=self.avatar_hash, format=image_format) @property def is_avatar_animated(self): From a6cced2168e52357b2464dada85e9baa40a242d8 Mon Sep 17 00:00:00 2001 From: thecosmos Date: Fri, 22 Nov 2019 01:02:13 +0530 Subject: [PATCH 2/9] Version change --- flask_discord/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flask_discord/__init__.py b/flask_discord/__init__.py index 1034482..6db5ba6 100644 --- a/flask_discord/__init__.py +++ b/flask_discord/__init__.py @@ -11,4 +11,4 @@ __all__ = [ ] -__version__ = "0.1.03" +__version__ = "0.1.04" From 64d59fdb3bb09b109fa3cb509b96f1ca86e90941 Mon Sep 17 00:00:00 2001 From: thecosmos Date: Fri, 22 Nov 2019 15:27:30 +0530 Subject: [PATCH 3/9] discriminator remains string to prevent some special case unwanted stuffs --- flask_discord/models/user.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flask_discord/models/user.py b/flask_discord/models/user.py index 2442a52..46e63cc 100644 --- a/flask_discord/models/user.py +++ b/flask_discord/models/user.py @@ -12,8 +12,8 @@ class User(DiscordModelsBase): The discord ID of the user. username : str The discord username of the user. - discriminator : int - 4 - digits discord tag of the user. + discriminator : str + 4 length string representing discord tag of the user. avatar_hash : str Hash of users avatar. bot : bool @@ -39,7 +39,7 @@ class User(DiscordModelsBase): self._payload = payload self.id = int(self._payload["id"]) self.username = self._payload["username"] - self.discriminator = int(self._payload["discriminator"]) + 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") From bec89bbedae5baeb92adca28156764a69efcbc36 Mon Sep 17 00:00:00 2001 From: thecosmos Date: Fri, 22 Nov 2019 15:27:57 +0530 Subject: [PATCH 4/9] Version change --- flask_discord/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flask_discord/__init__.py b/flask_discord/__init__.py index 6db5ba6..a8f2ca2 100644 --- a/flask_discord/__init__.py +++ b/flask_discord/__init__.py @@ -11,4 +11,4 @@ __all__ = [ ] -__version__ = "0.1.04" +__version__ = "0.1.05" From 443e36453e28688f9e6b0242d0011da4fc8a338b Mon Sep 17 00:00:00 2001 From: thecosmos Date: Sat, 18 Jan 2020 16:14:38 +0530 Subject: [PATCH 5/9] Add exception handling for unused session keys --- flask_discord/__init__.py | 2 +- flask_discord/client.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/flask_discord/__init__.py b/flask_discord/__init__.py index a8f2ca2..de4a43d 100644 --- a/flask_discord/__init__.py +++ b/flask_discord/__init__.py @@ -11,4 +11,4 @@ __all__ = [ ] -__version__ = "0.1.05" +__version__ = "0.1.06" diff --git a/flask_discord/client.py b/flask_discord/client.py index 663593b..33ba97b 100644 --- a/flask_discord/client.py +++ b/flask_discord/client.py @@ -62,7 +62,10 @@ class DiscordOAuth2Session(_http.DiscordOAuth2HttpClient): """ for session_key in self.SESSION_KEYS: - session.pop(session_key) + try: + session.pop(session_key) + except KeyError: + pass @property def authorized(self): From 6e9087dbf89923e13c56c712f630c285e51c7713 Mon Sep 17 00:00:00 2001 From: Dori Lahav Waisberg Date: Fri, 7 Feb 2020 23:25:07 +0200 Subject: [PATCH 6/9] fix fetch_connections not working because payload returns a list and not a single connection --- flask_discord/client.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/flask_discord/client.py b/flask_discord/client.py index 33ba97b..4daecfc 100644 --- a/flask_discord/client.py +++ b/flask_discord/client.py @@ -90,7 +90,8 @@ class DiscordOAuth2Session(_http.DiscordOAuth2HttpClient): flask_discord.models.UserConnection """ - return models.UserConnection(self.get("/users/@me/connections")) + connections_payload = self.get("/users/@me/connections") + return [models.UserConnection(payload) for payload in connections_payload] def fetch_guilds(self) -> list: """Requests and returns guilds of current user from discord. From 73fafa01c95eeac7c4fceb111abbb328ffeec54c Mon Sep 17 00:00:00 2001 From: Dori Lahav Waisberg Date: Fri, 7 Feb 2020 23:25:26 +0200 Subject: [PATCH 7/9] change return value of fetch_connections to list --- flask_discord/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flask_discord/client.py b/flask_discord/client.py index 4daecfc..c96e40f 100644 --- a/flask_discord/client.py +++ b/flask_discord/client.py @@ -82,7 +82,7 @@ class DiscordOAuth2Session(_http.DiscordOAuth2HttpClient): """ return models.User(self.get("/users/@me")) - def fetch_connections(self) -> models.UserConnection: + def fetch_connections(self) -> list: """Requests and returns connections of current user from discord. Returns From 4d6ddb988364378d7a5fca38fb556419d46a9f3e Mon Sep 17 00:00:00 2001 From: Dori Lahav Waisberg Date: Fri, 7 Feb 2020 23:26:24 +0200 Subject: [PATCH 8/9] Change id to not cast to int and fail if id is not included on UserConnection constructor --- flask_discord/models/connections.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flask_discord/models/connections.py b/flask_discord/models/connections.py index 17f4c6c..21a0a1c 100644 --- a/flask_discord/models/connections.py +++ b/flask_discord/models/connections.py @@ -80,7 +80,7 @@ class UserConnection(object): def __init__(self, payload): self._payload = payload - self.id = int(self._payload.get("id", 0)) + self.id = self._payload["id"] self.name = self._payload.get("name") self.type = self._payload.get("type") self.revoked = self._payload.get("revoked") From a1d321ff69b4e649fbf5c9a7342e120425dd34a7 Mon Sep 17 00:00:00 2001 From: Dori Lahav Waisberg Date: Fri, 7 Feb 2020 23:31:26 +0200 Subject: [PATCH 9/9] change id from int to str in comment --- flask_discord/models/connections.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flask_discord/models/connections.py b/flask_discord/models/connections.py index 21a0a1c..f6b4b40 100644 --- a/flask_discord/models/connections.py +++ b/flask_discord/models/connections.py @@ -54,7 +54,7 @@ class UserConnection(object): Attributes ---------- - id : int + id : str ID of the connection account. name : str The username of the connection account.