Browse Source

Change Message.application type to IntegrationApplication

pull/10109/head
dolfies 2 years ago
parent
commit
1df4596a3b
  1. 8
      discord/application.py
  2. 26
      discord/message.py
  3. 11
      discord/types/message.py

8
discord/application.py

@ -84,12 +84,12 @@ if TYPE_CHECKING:
ActivityStatistics as ActivityStatisticsPayload, ActivityStatistics as ActivityStatisticsPayload,
Application as ApplicationPayload, Application as ApplicationPayload,
Asset as AssetPayload, Asset as AssetPayload,
BaseApplication as BaseApplicationPayload,
Branch as BranchPayload, Branch as BranchPayload,
Build as BuildPayload, Build as BuildPayload,
Company as CompanyPayload, Company as CompanyPayload,
EmbeddedActivityConfig as EmbeddedActivityConfigPayload, EmbeddedActivityConfig as EmbeddedActivityConfigPayload,
GlobalActivityStatistics as GlobalActivityStatisticsPayload, GlobalActivityStatistics as GlobalActivityStatisticsPayload,
IntegrationApplication as IntegrationApplicationPayload,
Manifest as ManifestPayload, Manifest as ManifestPayload,
ManifestLabel as ManifestLabelPayload, ManifestLabel as ManifestLabelPayload,
PartialApplication as PartialApplicationPayload, PartialApplication as PartialApplicationPayload,
@ -3360,14 +3360,14 @@ class IntegrationApplication(Hashable):
'_cover_image', '_cover_image',
) )
def __init__(self, *, state: ConnectionState, data: IntegrationApplicationPayload): def __init__(self, *, state: ConnectionState, data: BaseApplicationPayload):
self._state: ConnectionState = state self._state: ConnectionState = state
self._update(data) self._update(data)
def __str__(self) -> str: def __str__(self) -> str:
return self.name return self.name
def _update(self, data: IntegrationApplicationPayload) -> None: def _update(self, data: BaseApplicationPayload) -> None:
self.id: int = int(data['id']) self.id: int = int(data['id'])
self.name: str = data['name'] self.name: str = data['name']
self.description: str = data.get('description') or '' self.description: str = data.get('description') or ''
@ -3375,7 +3375,7 @@ class IntegrationApplication(Hashable):
self._icon: Optional[str] = data.get('icon') self._icon: Optional[str] = data.get('icon')
self._cover_image: Optional[str] = data.get('cover_image') 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.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') self.role_connections_verification_url: Optional[str] = data.get('role_connections_verification_url')

26
discord/message.py

@ -67,6 +67,7 @@ from .channel import PartialMessageable
from .interactions import Interaction from .interactions import Interaction
from .commands import MessageCommand from .commands import MessageCommand
from .abc import _handle_commands from .abc import _handle_commands
from .application import IntegrationApplication
if TYPE_CHECKING: if TYPE_CHECKING:
@ -76,7 +77,7 @@ if TYPE_CHECKING:
Message as MessagePayload, Message as MessagePayload,
Attachment as AttachmentPayload, Attachment as AttachmentPayload,
MessageReference as MessageReferencePayload, MessageReference as MessageReferencePayload,
MessageApplication as MessageApplicationPayload, BaseApplication as MessageApplicationPayload,
MessageActivity as MessageActivityPayload, MessageActivity as MessageActivityPayload,
) )
@ -1224,16 +1225,12 @@ class Message(PartialMessage, Hashable):
- ``type``: An integer denoting the type of message activity being requested. - ``type``: An integer denoting the type of message activity being requested.
- ``party_id``: The party ID associated with the party. - ``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. 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. Type is now :class:`IntegrationApplication` instead of :class:`dict`.
- ``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.
stickers: List[:class:`StickerItem`] stickers: List[:class:`StickerItem`]
A list of sticker items given to the message. 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.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.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.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.activity: Optional[MessageActivityPayload] = data.get('activity')
self.channel: MessageableChannel = channel self.channel: MessageableChannel = channel
self._edited_timestamp: Optional[datetime.datetime] = utils.parse_time(data['edited_timestamp']) self._edited_timestamp: Optional[datetime.datetime] = utils.parse_time(data['edited_timestamp'])
@ -1332,8 +1328,15 @@ class Message(PartialMessage, Hashable):
except AttributeError: except AttributeError:
self.guild = state._get_guild(utils._get_as_snowflake(data, 'guild_id')) 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: try:
interaction = data['interaction'] interaction = data['interaction']
except KeyError: except KeyError:
@ -1467,7 +1470,8 @@ class Message(PartialMessage, Hashable):
self.flags = MessageFlags._from_value(value) self.flags = MessageFlags._from_value(value)
def _handle_application(self, value: MessageApplicationPayload) -> None: 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: def _handle_activity(self, value: MessageActivityPayload) -> None:
self.activity = value self.activity = value

11
discord/types/message.py

@ -35,6 +35,7 @@ from .embed import Embed
from .channel import ChannelType from .channel import ChannelType
from .components import Component from .components import Component
from .interactions import MessageInteraction from .interactions import MessageInteraction
from .application import BaseApplication
from .sticker import StickerItem from .sticker import StickerItem
@ -78,14 +79,6 @@ class MessageActivity(TypedDict):
party_id: str party_id: str
class MessageApplication(TypedDict):
id: Snowflake
description: str
icon: Optional[str]
name: str
cover_image: NotRequired[str]
class MessageReference(TypedDict, total=False): class MessageReference(TypedDict, total=False):
message_id: Snowflake message_id: Snowflake
channel_id: Snowflake channel_id: Snowflake
@ -116,7 +109,7 @@ class Message(PartialMessage):
nonce: NotRequired[Union[int, str]] nonce: NotRequired[Union[int, str]]
webhook_id: NotRequired[Snowflake] webhook_id: NotRequired[Snowflake]
activity: NotRequired[MessageActivity] activity: NotRequired[MessageActivity]
application: NotRequired[MessageApplication] application: NotRequired[BaseApplication]
application_id: NotRequired[Snowflake] application_id: NotRequired[Snowflake]
message_reference: NotRequired[MessageReference] message_reference: NotRequired[MessageReference]
flags: NotRequired[int] flags: NotRequired[int]

Loading…
Cancel
Save