From 1df4596a3b12118c0c284438c790a9bafbcc6f25 Mon Sep 17 00:00:00 2001 From: dolfies Date: Sun, 26 Mar 2023 14:19:15 -0400 Subject: [PATCH] Change Message.application type to IntegrationApplication --- discord/application.py | 8 ++++---- discord/message.py | 26 +++++++++++++++----------- discord/types/message.py | 11 ++--------- 3 files changed, 21 insertions(+), 24 deletions(-) diff --git a/discord/application.py b/discord/application.py index 8fe6a2320..b421111a5 100644 --- a/discord/application.py +++ b/discord/application.py @@ -84,12 +84,12 @@ if TYPE_CHECKING: ActivityStatistics as ActivityStatisticsPayload, Application as ApplicationPayload, Asset as AssetPayload, + BaseApplication as BaseApplicationPayload, Branch as BranchPayload, Build as BuildPayload, Company as CompanyPayload, EmbeddedActivityConfig as EmbeddedActivityConfigPayload, GlobalActivityStatistics as GlobalActivityStatisticsPayload, - IntegrationApplication as IntegrationApplicationPayload, Manifest as ManifestPayload, ManifestLabel as ManifestLabelPayload, PartialApplication as PartialApplicationPayload, @@ -3360,14 +3360,14 @@ class IntegrationApplication(Hashable): '_cover_image', ) - def __init__(self, *, state: ConnectionState, data: IntegrationApplicationPayload): + def __init__(self, *, state: ConnectionState, data: BaseApplicationPayload): self._state: ConnectionState = state self._update(data) def __str__(self) -> str: return self.name - def _update(self, data: IntegrationApplicationPayload) -> None: + def _update(self, data: BaseApplicationPayload) -> None: self.id: int = int(data['id']) self.name: str = data['name'] self.description: str = data.get('description') or '' @@ -3375,7 +3375,7 @@ class IntegrationApplication(Hashable): self._icon: Optional[str] = data.get('icon') self._cover_image: Optional[str] = data.get('cover_image') - self.bot: Optional[User] = self._state.create_user(data['bot']) if 'bot' in data else None + self.bot: Optional[User] = self._state.create_user(data['bot']) if 'bot' in data else None # type: ignore self.primary_sku_id: Optional[int] = utils._get_as_snowflake(data, 'primary_sku_id') self.role_connections_verification_url: Optional[str] = data.get('role_connections_verification_url') diff --git a/discord/message.py b/discord/message.py index ca617233e..2ef28e8be 100644 --- a/discord/message.py +++ b/discord/message.py @@ -67,6 +67,7 @@ from .channel import PartialMessageable from .interactions import Interaction from .commands import MessageCommand from .abc import _handle_commands +from .application import IntegrationApplication if TYPE_CHECKING: @@ -76,7 +77,7 @@ if TYPE_CHECKING: Message as MessagePayload, Attachment as AttachmentPayload, MessageReference as MessageReferencePayload, - MessageApplication as MessageApplicationPayload, + BaseApplication as MessageApplicationPayload, MessageActivity as MessageActivityPayload, ) @@ -1224,16 +1225,12 @@ class Message(PartialMessage, Hashable): - ``type``: An integer denoting the type of message activity being requested. - ``party_id``: The party ID associated with the party. - application: Optional[:class:`dict`] + application: Optional[:class:`IntegrationApplication`] The rich presence enabled application associated with this message. - It is a dictionary with the following keys: + .. versionchanged:: 2.0 - - ``id``: A string representing the application's ID. - - ``name``: A string representing the application's name. - - ``description``: A string representing the application's description. - - ``icon``: A string representing the icon ID of the application. - - ``cover_image``: A string representing the embed's image asset ID. + Type is now :class:`IntegrationApplication` instead of :class:`dict`. stickers: List[:class:`StickerItem`] A list of sticker items given to the message. @@ -1311,7 +1308,6 @@ class Message(PartialMessage, Hashable): self.reactions: List[Reaction] = [Reaction(message=self, data=d) for d in data.get('reactions', [])] self.attachments: List[Attachment] = [Attachment(data=a, state=self._state) for a in data['attachments']] self.embeds: List[Embed] = [Embed.from_dict(a) for a in data['embeds']] - self.application: Optional[MessageApplicationPayload] = data.get('application') self.activity: Optional[MessageActivityPayload] = data.get('activity') self.channel: MessageableChannel = channel self._edited_timestamp: Optional[datetime.datetime] = utils.parse_time(data['edited_timestamp']) @@ -1332,8 +1328,15 @@ class Message(PartialMessage, Hashable): except AttributeError: self.guild = state._get_guild(utils._get_as_snowflake(data, 'guild_id')) - self.interaction: Optional[Interaction] = None + self.application: Optional[IntegrationApplication] = None + try: + application = data['application'] + except KeyError: + pass + else: + self.application = IntegrationApplication(state=self._state, data=application) + self.interaction: Optional[Interaction] = None try: interaction = data['interaction'] except KeyError: @@ -1467,7 +1470,8 @@ class Message(PartialMessage, Hashable): self.flags = MessageFlags._from_value(value) def _handle_application(self, value: MessageApplicationPayload) -> None: - self.application = value + application = IntegrationApplication(state=self._state, data=value) + self.application = application def _handle_activity(self, value: MessageActivityPayload) -> None: self.activity = value diff --git a/discord/types/message.py b/discord/types/message.py index 178285ed7..b6b41d8c1 100644 --- a/discord/types/message.py +++ b/discord/types/message.py @@ -35,6 +35,7 @@ from .embed import Embed from .channel import ChannelType from .components import Component from .interactions import MessageInteraction +from .application import BaseApplication from .sticker import StickerItem @@ -78,14 +79,6 @@ class MessageActivity(TypedDict): party_id: str -class MessageApplication(TypedDict): - id: Snowflake - description: str - icon: Optional[str] - name: str - cover_image: NotRequired[str] - - class MessageReference(TypedDict, total=False): message_id: Snowflake channel_id: Snowflake @@ -116,7 +109,7 @@ class Message(PartialMessage): nonce: NotRequired[Union[int, str]] webhook_id: NotRequired[Snowflake] activity: NotRequired[MessageActivity] - application: NotRequired[MessageApplication] + application: NotRequired[BaseApplication] application_id: NotRequired[Snowflake] message_reference: NotRequired[MessageReference] flags: NotRequired[int]