From 9895ab02255a3b301c7564ca6606a1bef9614d53 Mon Sep 17 00:00:00 2001 From: Soheab_ <33902984+Soheab@users.noreply.github.com> Date: Wed, 9 Aug 2023 18:25:38 +0200 Subject: [PATCH 1/2] Make discriminator optional for all classes --- somerandomapi/clients/client.py | 2 +- somerandomapi/clients/premium.py | 18 +++++++++--------- somerandomapi/internals/endpoints.py | 6 +++--- somerandomapi/models/rankcard.py | 11 +++++++---- somerandomapi/models/welcome/free.py | 11 +++++++---- somerandomapi/models/welcome/premium.py | 11 +++++++---- 6 files changed, 34 insertions(+), 25 deletions(-) diff --git a/somerandomapi/clients/client.py b/somerandomapi/clients/client.py index 91382a6..5a6895c 100644 --- a/somerandomapi/clients/client.py +++ b/somerandomapi/clients/client.py @@ -373,10 +373,10 @@ async def welcome_image( ("background", background, True), ("avatar_url", avatar_url, True), ("username", username, True), - ("discriminator", discriminator, True), ("server_name", server_name, True), ("member_count", member_count, True), ("text_color", text_color, True), + ("discriminator", discriminator, False), ("key", key, False), ("font", font, False), ) diff --git a/somerandomapi/clients/premium.py b/somerandomapi/clients/premium.py index 403ec8a..2d31a5f 100644 --- a/somerandomapi/clients/premium.py +++ b/somerandomapi/clients/premium.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Literal, Optional, TYPE_CHECKING +from typing import Literal, Optional, TYPE_CHECKING, Union from .. import utils as _utils from ..internals.endpoints import Premium as PremiumEndpoint @@ -81,7 +81,7 @@ async def rankcard( *, username: Optional[str] = None, avatar_url: Optional[str] = None, - discriminator: Optional[str] = None, + discriminator: Optional[Union[int, str]] = None, level: Optional[int] = None, current_xp: Optional[int] = None, needed_xp: Optional[int] = None, @@ -102,8 +102,8 @@ async def rankcard( The username. Max 32 characters. Required if `obj` is not passed. avatar_url: Optional[:class:`str`] The avatar URL. Required if `obj` is not passed. - discriminator: Optional[:class:`str`] - The discriminator. Required if `obj` is not passed. + discriminator: Optional[Union[:class:`int`, :class:`str`]] + The discriminator to use. Required if ``obj`` is not passed. level: Optional[:class:`int`] The level. Required if `obj` is not passed. current_xp: Optional[:class:`int`] @@ -126,10 +126,10 @@ async def rankcard( values = ( ("username", username, True), ("avatar_url", avatar_url, True), - ("discriminator", discriminator, True), ("level", level, True), ("current_xp", current_xp, True), ("needed_xp", needed_xp, True), + ("discriminator", discriminator, False), ("key", key, False), ("background_url", background_url, False), ("background_color", background_color, False), @@ -153,7 +153,7 @@ async def welcome_image( type: Optional[WelcomeType] = None, username: Optional[str] = None, avatar_url: Optional[str] = None, - discriminator: Optional[str] = None, + discriminator: Optional[Union[int, str]] = None, server_name: Optional[str] = None, member_count: Optional[int] = None, text_color: Optional[WelcomeTextColor] = None, @@ -175,8 +175,8 @@ async def welcome_image( The username. Required if `obj` is not passed. avatar_url: Optional[:class:`str`] The avatar URL. Required if `obj` is not passed. - discriminator: Optional[:class:`str`] - The discriminator. Required if `obj` is not passed. + discriminator: Optional[Union[:class:`int`, :class:`str`]] + The discriminator to use. Required if ``obj`` is not passed. server_name: Optional[:class:`str`] The server name. Required if `obj` is not passed. member_count: Optional[:class:`int`] @@ -195,10 +195,10 @@ async def welcome_image( ("background_url", background_url, True), ("avatar_url", avatar_url, True), ("username", username, True), - ("discriminator", discriminator, True), ("server_name", server_name, True), ("member_count", member_count, True), ("text_color", text_color, True), + ("discriminator", discriminator, False), ("key", key, False), ("font", font, False), ) diff --git a/somerandomapi/internals/endpoints.py b/somerandomapi/internals/endpoints.py index 39b1717..ec1e182 100644 --- a/somerandomapi/internals/endpoints.py +++ b/somerandomapi/internals/endpoints.py @@ -449,7 +449,7 @@ def base(cls): "rankcard", username=Parameter(extra="maximum 32 characters"), avatar=Parameter(extra="use png or jpg"), - discriminator=Parameter(), + discriminator=Parameter(required=False), level=Parameter(), cxp=Parameter(extra="Current XP"), nxp=Parameter(extra="Needed XP"), @@ -465,7 +465,7 @@ def base(cls): type=Parameter(), username=Parameter(), avatar=Parameter(extra="use png or jpg"), - discriminator=Parameter(), + discriminator=Parameter(required=False), guildName=Parameter(), memberCount=Parameter(), textcolor=Parameter(extra="red, orange, yellow, green, blue, indigo, purple, pink, black, or white"), @@ -516,7 +516,7 @@ def base(cls): type=Parameter(), username=Parameter(), avatar=Parameter(extra="use png or jpg"), - discriminator=Parameter(), + discriminator=Parameter(required=False), guildName=Parameter(), memberCount=Parameter(), textcolor=Parameter(extra="red, orange, yellow, green, blue, indigo, purple, pink, black, or white"), diff --git a/somerandomapi/models/rankcard.py b/somerandomapi/models/rankcard.py index 1a2a561..66215d4 100644 --- a/somerandomapi/models/rankcard.py +++ b/somerandomapi/models/rankcard.py @@ -1,5 +1,5 @@ from dataclasses import dataclass, field -from typing import Optional, TYPE_CHECKING +from typing import Optional, TYPE_CHECKING, Union from .. import utils as _utils from ..internals.endpoints import Premium @@ -19,14 +19,17 @@ class Rankcard(BaseImageModel): """The username of the user. Max 32 characters.""" avatar_url: str = field(metadata={"alias_of": "avatar"}) """The avatar URL of the user. Must be .png or .jpg.""" - discriminator: int = field(metadata={"length": 4}) - """The discriminator of the user.""" level: int """The current level of the user.""" current_xp: int = field(metadata={"alias_of": "cxp"}) """The current XP of the user.""" needed_xp: int = field(metadata={"alias_of": "nxp"}) """The needed XP to level up.""" + discriminator: Optional[Union[int, str]] = field(default=None, metadata={"range": [1, 4]}) + """The discriminator of the user. + + Will be stripped if equal to 0 + """ key: Optional[str] = None """The API key for the rank card. Not required if you have a key set in the client.""" background_url: Optional[str] = field(default=None, metadata={"alias_of": "bg"}) @@ -65,10 +68,10 @@ def from_dict( *, username: str, avatar: str, - discriminator: int, level: int, cxp: int, nxp: int, + discriminator: Optional[Union[int, str]] = None, key: Optional[str] = None, bg: Optional[str] = None, cbg: Optional[str] = None, diff --git a/somerandomapi/models/welcome/free.py b/somerandomapi/models/welcome/free.py index 77149da..d5df1b2 100644 --- a/somerandomapi/models/welcome/free.py +++ b/somerandomapi/models/welcome/free.py @@ -1,5 +1,5 @@ from dataclasses import dataclass, field -from typing import Literal, Optional, TYPE_CHECKING +from typing import Literal, Optional, TYPE_CHECKING, Union from ...enums import WelcomeBackground, WelcomeTextColor, WelcomeType from ...internals.endpoints import WelcomeImages as WelcomeImagesEndpoint @@ -27,14 +27,17 @@ class WelcomeFree(BaseImageModel): """The username of the user.""" avatar_url: str = field(metadata={"alias_of": "avatar"}) """The avatar URL of the user. Must be .png or .jpg.""" - discriminator: int = field(metadata={"length": 4}) - """The discriminator of the user.""" server_name: str = field(metadata={"alias_of": "guildName"}) """The server name.""" member_count: int = field(metadata={"alias_of": "memberCount"}) """The member count.""" text_color: WelcomeTextColor = field(metadata={"alias_of": "textcolor"}) """The text color.""" + discriminator: Optional[Union[int, str]] = field(default=None, metadata={"range": [1, 4]}) + """The discriminator of the user. + + Will be stripped if equal to 0 + """ key: Optional[str] = field(default=None, repr=False) """The key, doesn't need to be active. @@ -57,10 +60,10 @@ def from_dict( background: Backgrounds, username: str, avatar: str, - discriminator: int, guildName: str, memberCount: int, textcolor: WelcomeTextColors, + discriminator: Optional[Union[int, str]] = None, key: Optional[str] = None, font: Optional[int] = None, ): diff --git a/somerandomapi/models/welcome/premium.py b/somerandomapi/models/welcome/premium.py index 0910b8b..b6bbda7 100644 --- a/somerandomapi/models/welcome/premium.py +++ b/somerandomapi/models/welcome/premium.py @@ -1,5 +1,5 @@ from dataclasses import dataclass, field -from typing import Literal, Optional, TYPE_CHECKING +from typing import Literal, Optional, TYPE_CHECKING, Union from ...enums import WelcomeTextColor, WelcomeType from ...internals.endpoints import Premium @@ -24,14 +24,17 @@ class WelcomePremium(BaseImageModel): """The username of the user.""" avatar_url: str = field(metadata={"alias_of": "avatar"}) """The avatar URL of the user. Must be .png or .jpg.""" - discriminator: int - """The discriminator of the user.""" server_name: str = field(metadata={"alias_of": "guildName"}) """The server name.""" member_count: int = field(metadata={"alias_of": "memberCount"}) """The member count.""" text_color: WelcomeTextColor = field(metadata={"alias_of": "textcolor"}) """The text color.""" + discriminator: Optional[Union[int, str]] = field(default=None, metadata={"range": [1, 4]}) + """The discriminator of the user. + + Will be stripped if equal to 0 + """ key: Optional[str] = field(default=None, repr=False) """The key. At least tier 2 is required. Use the free endpoint if you don't have a tier 2 key. @@ -54,10 +57,10 @@ def from_dict( type: Literal["join", "leave"], username: str, avatar: str, - discriminator: int, guildName: str, memberCount: int, textcolor: WelcomeTextColors, + discriminator: Optional[Union[int, str]] = None, key: Optional[str] = None, bg: Optional[str] = None, font: Optional[int] = None, From 3a0c9dff1f06918188276b939b592addac5ff8a9 Mon Sep 17 00:00:00 2001 From: Soheab_ <33902984+Soheab@users.noreply.github.com> Date: Wed, 9 Aug 2023 23:54:25 +0200 Subject: [PATCH 2/2] API requires discrim to be an integer --- somerandomapi/clients/client.py | 6 +++--- somerandomapi/clients/premium.py | 14 +++++++------- somerandomapi/models/rankcard.py | 6 +++--- somerandomapi/models/welcome/free.py | 6 +++--- somerandomapi/models/welcome/premium.py | 6 +++--- 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/somerandomapi/clients/client.py b/somerandomapi/clients/client.py index 5a6895c..26764ce 100644 --- a/somerandomapi/clients/client.py +++ b/somerandomapi/clients/client.py @@ -331,7 +331,7 @@ async def welcome_image( background: Optional[WelcomeBackground] = None, avatar_url: Optional[str] = None, username: Optional[str] = None, - discriminator: Optional[Union[int, str]] = None, + discriminator: Optional[int] = None, server_name: Optional[str] = None, member_count: Optional[int] = None, text_color: Optional[WelcomeTextColor] = None, @@ -354,8 +354,8 @@ async def welcome_image( The avatar URL to use. Required if ``obj`` is not passed. username: Optional[:class:`str`] The username to use. Required if ``obj`` is not passed. - discriminator: Optional[Union[:class:`int`, :class:`str`]] - The discriminator to use. Required if ``obj`` is not passed. + discriminator: Optional[:class:`int`] + The discriminator to use. Required if ``obj`` is not passed. server_name: Optional[:class:`str`] The server name to use. Required if ``obj`` is not passed. member_count: Optional[:class:`int`] diff --git a/somerandomapi/clients/premium.py b/somerandomapi/clients/premium.py index 2d31a5f..0418a73 100644 --- a/somerandomapi/clients/premium.py +++ b/somerandomapi/clients/premium.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Literal, Optional, TYPE_CHECKING, Union +from typing import Literal, Optional, TYPE_CHECKING from .. import utils as _utils from ..internals.endpoints import Premium as PremiumEndpoint @@ -81,7 +81,7 @@ async def rankcard( *, username: Optional[str] = None, avatar_url: Optional[str] = None, - discriminator: Optional[Union[int, str]] = None, + discriminator: Optional[int] = None, level: Optional[int] = None, current_xp: Optional[int] = None, needed_xp: Optional[int] = None, @@ -102,8 +102,8 @@ async def rankcard( The username. Max 32 characters. Required if `obj` is not passed. avatar_url: Optional[:class:`str`] The avatar URL. Required if `obj` is not passed. - discriminator: Optional[Union[:class:`int`, :class:`str`]] - The discriminator to use. Required if ``obj`` is not passed. + discriminator: Optional[:class:`int`] + The discriminator to use. Required if ``obj`` is not passed. level: Optional[:class:`int`] The level. Required if `obj` is not passed. current_xp: Optional[:class:`int`] @@ -153,7 +153,7 @@ async def welcome_image( type: Optional[WelcomeType] = None, username: Optional[str] = None, avatar_url: Optional[str] = None, - discriminator: Optional[Union[int, str]] = None, + discriminator: Optional[int] = None, server_name: Optional[str] = None, member_count: Optional[int] = None, text_color: Optional[WelcomeTextColor] = None, @@ -175,8 +175,8 @@ async def welcome_image( The username. Required if `obj` is not passed. avatar_url: Optional[:class:`str`] The avatar URL. Required if `obj` is not passed. - discriminator: Optional[Union[:class:`int`, :class:`str`]] - The discriminator to use. Required if ``obj`` is not passed. + discriminator: Optional[:class:`int`] + The discriminator to use. Required if ``obj`` is not passed. server_name: Optional[:class:`str`] The server name. Required if `obj` is not passed. member_count: Optional[:class:`int`] diff --git a/somerandomapi/models/rankcard.py b/somerandomapi/models/rankcard.py index 66215d4..1fe28b5 100644 --- a/somerandomapi/models/rankcard.py +++ b/somerandomapi/models/rankcard.py @@ -1,5 +1,5 @@ from dataclasses import dataclass, field -from typing import Optional, TYPE_CHECKING, Union +from typing import Optional, TYPE_CHECKING from .. import utils as _utils from ..internals.endpoints import Premium @@ -25,7 +25,7 @@ class Rankcard(BaseImageModel): """The current XP of the user.""" needed_xp: int = field(metadata={"alias_of": "nxp"}) """The needed XP to level up.""" - discriminator: Optional[Union[int, str]] = field(default=None, metadata={"range": [1, 4]}) + discriminator: Optional[int] = field(default=None, metadata={"range": [1, 4]}) """The discriminator of the user. Will be stripped if equal to 0 @@ -71,7 +71,7 @@ def from_dict( level: int, cxp: int, nxp: int, - discriminator: Optional[Union[int, str]] = None, + discriminator: Optional[int] = None, key: Optional[str] = None, bg: Optional[str] = None, cbg: Optional[str] = None, diff --git a/somerandomapi/models/welcome/free.py b/somerandomapi/models/welcome/free.py index d5df1b2..754edd3 100644 --- a/somerandomapi/models/welcome/free.py +++ b/somerandomapi/models/welcome/free.py @@ -1,5 +1,5 @@ from dataclasses import dataclass, field -from typing import Literal, Optional, TYPE_CHECKING, Union +from typing import Literal, Optional, TYPE_CHECKING from ...enums import WelcomeBackground, WelcomeTextColor, WelcomeType from ...internals.endpoints import WelcomeImages as WelcomeImagesEndpoint @@ -33,7 +33,7 @@ class WelcomeFree(BaseImageModel): """The member count.""" text_color: WelcomeTextColor = field(metadata={"alias_of": "textcolor"}) """The text color.""" - discriminator: Optional[Union[int, str]] = field(default=None, metadata={"range": [1, 4]}) + discriminator: Optional[int] = field(default=None, metadata={"range": [1, 4]}) """The discriminator of the user. Will be stripped if equal to 0 @@ -63,7 +63,7 @@ def from_dict( guildName: str, memberCount: int, textcolor: WelcomeTextColors, - discriminator: Optional[Union[int, str]] = None, + discriminator: Optional[int] = None, key: Optional[str] = None, font: Optional[int] = None, ): diff --git a/somerandomapi/models/welcome/premium.py b/somerandomapi/models/welcome/premium.py index b6bbda7..929cf78 100644 --- a/somerandomapi/models/welcome/premium.py +++ b/somerandomapi/models/welcome/premium.py @@ -1,5 +1,5 @@ from dataclasses import dataclass, field -from typing import Literal, Optional, TYPE_CHECKING, Union +from typing import Literal, Optional, TYPE_CHECKING from ...enums import WelcomeTextColor, WelcomeType from ...internals.endpoints import Premium @@ -30,7 +30,7 @@ class WelcomePremium(BaseImageModel): """The member count.""" text_color: WelcomeTextColor = field(metadata={"alias_of": "textcolor"}) """The text color.""" - discriminator: Optional[Union[int, str]] = field(default=None, metadata={"range": [1, 4]}) + discriminator: Optional[int] = field(default=None, metadata={"range": [1, 4]}) """The discriminator of the user. Will be stripped if equal to 0 @@ -60,7 +60,7 @@ def from_dict( guildName: str, memberCount: int, textcolor: WelcomeTextColors, - discriminator: Optional[Union[int, str]] = None, + discriminator: Optional[int] = None, key: Optional[str] = None, bg: Optional[str] = None, font: Optional[int] = None,