From 4be39fe7432ed75169b7270a9d982e193dbc94e2 Mon Sep 17 00:00:00 2001 From: shiftinv Date: Sun, 2 Apr 2023 20:46:56 +0200 Subject: [PATCH 1/5] fix(typing): `MessageActivity.party_id` is optional --- disnake/types/message.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/disnake/types/message.py b/disnake/types/message.py index 15eef4f44e..60a06a6142 100644 --- a/disnake/types/message.py +++ b/disnake/types/message.py @@ -49,7 +49,7 @@ class Attachment(TypedDict): class MessageActivity(TypedDict): type: MessageActivityType - party_id: str + party_id: NotRequired[str] class MessageApplication(TypedDict): From 25f969fac7f772bd1e0cf5530cda40d66c0abb60 Mon Sep 17 00:00:00 2001 From: shiftinv Date: Sun, 2 Apr 2023 20:47:36 +0200 Subject: [PATCH 2/5] fix(typing): improve `Team`/`TeamMember` types --- disnake/types/team.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/disnake/types/team.py b/disnake/types/team.py index 96ccdeac51..5662365e03 100644 --- a/disnake/types/team.py +++ b/disnake/types/team.py @@ -2,15 +2,17 @@ from __future__ import annotations -from typing import List, Optional, TypedDict +from typing import List, Literal, Optional, TypedDict from .snowflake import Snowflake from .user import PartialUser +TeamMembershipState = Literal[1, 2] + class TeamMember(TypedDict): user: PartialUser - membership_state: int + membership_state: TeamMembershipState permissions: List[str] team_id: Snowflake @@ -18,6 +20,6 @@ class TeamMember(TypedDict): class Team(TypedDict): id: Snowflake name: str - owner_id: Snowflake + owner_user_id: Snowflake members: List[TeamMember] icon: Optional[str] From 7fbb705cf9383dfe0ad60445a2f805e10dce1ba2 Mon Sep 17 00:00:00 2001 From: shiftinv Date: Sun, 2 Apr 2023 20:48:59 +0200 Subject: [PATCH 3/5] fix(typing): make some sticker fields optional/nullable --- disnake/types/sticker.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/disnake/types/sticker.py b/disnake/types/sticker.py index dff31cc081..ccd2d764ff 100644 --- a/disnake/types/sticker.py +++ b/disnake/types/sticker.py @@ -2,7 +2,7 @@ from __future__ import annotations -from typing import List, Literal, TypedDict, Union +from typing import List, Literal, Optional, TypedDict, Union from typing_extensions import NotRequired @@ -21,7 +21,7 @@ class StickerItem(TypedDict): class BaseSticker(TypedDict): id: Snowflake name: str - description: str + description: Optional[str] tags: str format_type: StickerFormatType @@ -34,7 +34,7 @@ class StandardSticker(BaseSticker): class GuildSticker(BaseSticker): type: Literal[2] - available: bool + available: NotRequired[bool] guild_id: Snowflake user: NotRequired[User] @@ -61,7 +61,7 @@ class CreateGuildSticker(TypedDict): class EditGuildSticker(TypedDict, total=False): name: str tags: str - description: str + description: Optional[str] class ListPremiumStickerPacks(TypedDict): From becf1a801d03aa1adb560b037d2252efb670730b Mon Sep 17 00:00:00 2001 From: shiftinv Date: Sun, 2 Apr 2023 20:58:36 +0200 Subject: [PATCH 4/5] fix: update stickers to match typings --- disnake/sticker.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/disnake/sticker.py b/disnake/sticker.py index 63bea5ca8c..7a0f413731 100644 --- a/disnake/sticker.py +++ b/disnake/sticker.py @@ -263,7 +263,7 @@ def __init__(self, *, state: ConnectionState, data: StickerPayload) -> None: def _from_data(self, data: StickerPayload) -> None: self.id: int = int(data["id"]) self.name: str = data["name"] - self.description: str = data["description"] + self.description: str = data.get("description") or "" self.format: StickerFormatType = try_enum(StickerFormatType, data["format_type"]) def __repr__(self) -> str: @@ -402,7 +402,7 @@ class GuildSticker(Sticker): def _from_data(self, data: GuildStickerPayload) -> None: super()._from_data(data) - self.available: bool = data["available"] + self.available: bool = data.get("available", True) self.guild_id: int = int(data["guild_id"]) user = data.get("user") self.user: Optional[User] = self._state.store_user(user) if user else None @@ -425,7 +425,7 @@ async def edit( self, *, name: str = MISSING, - description: str = MISSING, + description: Optional[str] = MISSING, emoji: str = MISSING, reason: Optional[str] = None, ) -> GuildSticker: From bd5cb4744ca1a99eab39aece4a84aaad4bd2d538 Mon Sep 17 00:00:00 2001 From: shiftinv Date: Sun, 2 Apr 2023 21:09:45 +0200 Subject: [PATCH 5/5] docs: add changelog entries --- changelog/996.bugfix.rst | 1 + changelog/996.misc.rst | 1 + 2 files changed, 2 insertions(+) create mode 100644 changelog/996.bugfix.rst create mode 100644 changelog/996.misc.rst diff --git a/changelog/996.bugfix.rst b/changelog/996.bugfix.rst new file mode 100644 index 0000000000..c996c3e3e3 --- /dev/null +++ b/changelog/996.bugfix.rst @@ -0,0 +1 @@ +Improve :class:`GuildSticker` deserialization, fix :meth:`GuildSticker.edit` parameter types to match documentation. diff --git a/changelog/996.misc.rst b/changelog/996.misc.rst new file mode 100644 index 0000000000..5652a20ce8 --- /dev/null +++ b/changelog/996.misc.rst @@ -0,0 +1 @@ +Update typings of :attr:`Message.activity` and internal :class:`Team` payloads to match API documentation.