diff --git a/changelog/1519.misc.rst b/changelog/1519.misc.rst new file mode 100644 index 0000000000..3a09092793 --- /dev/null +++ b/changelog/1519.misc.rst @@ -0,0 +1 @@ +Support :class:`ApplicationFlags` beyond bit 30 by using ``flags_new``. diff --git a/disnake/appinfo.py b/disnake/appinfo.py index 4fa2255a93..0460ca3ff7 100644 --- a/disnake/appinfo.py +++ b/disnake/appinfo.py @@ -352,7 +352,7 @@ def __init__(self, state: ConnectionState, data: AppInfoPayload) -> None: self.terms_of_service_url: str | None = data.get("terms_of_service_url") self.privacy_policy_url: str | None = data.get("privacy_policy_url") - flags: int | None = data.get("flags") + flags: int | None = utils._get_as_snowflake(data, "flags_new") self.flags: ApplicationFlags | None = ( ApplicationFlags._from_value(flags) if flags is not None else None ) diff --git a/disnake/state.py b/disnake/state.py index b1332cf503..e5b3dec9bf 100644 --- a/disnake/state.py +++ b/disnake/state.py @@ -768,7 +768,7 @@ def parse_ready(self, data: gateway.ReadyEvent) -> None: else: if self.application_id is None: self.application_id = utils._get_as_snowflake(application, "id") - self.application_flags = ApplicationFlags._from_value(application["flags"]) + self.application_flags = ApplicationFlags._from_value(int(application["flags_new"])) for guild_data in data["guilds"]: self._add_guild_from_data(guild_data) @@ -2580,7 +2580,7 @@ def parse_ready(self, data: gateway.ReadyEvent) -> None: else: if self.application_id is None: self.application_id = utils._get_as_snowflake(application, "id") - self.application_flags = ApplicationFlags._from_value(application["flags"]) + self.application_flags = ApplicationFlags._from_value(int(application["flags_new"])) for guild_data in data["guilds"]: self._add_guild_from_data(guild_data) diff --git a/disnake/types/appinfo.py b/disnake/types/appinfo.py index 723acae2ee..6fe58ff476 100644 --- a/disnake/types/appinfo.py +++ b/disnake/types/appinfo.py @@ -45,6 +45,7 @@ class AppInfo(BaseAppInfo): owner: User team: NotRequired[Team] flags: NotRequired[int] + flags_new: NotRequired[str] # like `flags`, but also contains flags beyond bit 30 guild_id: NotRequired[Snowflake] primary_sku_id: NotRequired[Snowflake] slug: NotRequired[str] @@ -68,12 +69,14 @@ class PartialAppInfo(BaseAppInfo, total=False): rpc_origins: list[str] cover_image: str flags: int + flags_new: str # like `flags`, but also contains flags beyond bit 30 # see https://docs.discord.com/developers/events/gateway-events#ready-ready-event-fields class PartialGatewayAppInfo(TypedDict): id: Snowflake flags: int + flags_new: str # like `flags`, but also contains flags beyond bit 30 class EditAppInfo(TypedDict, total=False):