feat(interactions): add respond() method

This commit is contained in:
Victor Kotlin 2022-08-01 21:20:38 +03:00
parent 240025351d
commit e6b4ffca6c
2 changed files with 44 additions and 0 deletions

View file

@ -78,6 +78,7 @@ class InteractionCallbackType(IntEnum):
return self.value return self.value
@dataclass(repr=False)
class InteractionResponse(APIModelBase): class InteractionResponse(APIModelBase):
"""Interaction Response """Interaction Response
@ -88,6 +89,7 @@ class InteractionResponse(APIModelBase):
data: Optional[Any] data: Optional[Any]
An optional response message An optional response message
""" """
type: InteractionCallbackType type: InteractionCallbackType
data: Optional[Any] data: Optional[Any]
@ -213,6 +215,18 @@ class Interaction(APIModelBase):
return self return self
async def respond(self, response: InteractionResponse):
"""
Respond to an interaction.
Parameters
----------
response: :class:`~melisa.models.interactions.interactions.InteractionResponse`
The response to send.
"""
await self._client.rest.interaction_respond(self, response)
@dataclass(repr=False) @dataclass(repr=False)
class ResolvedData(APIModelBase): class ResolvedData(APIModelBase):

View file

@ -14,6 +14,7 @@ from .models.interactions.commands import (
_choose_command_type, _choose_command_type,
) )
from .models.interactions.i18n import LocalizedField from .models.interactions.i18n import LocalizedField
from .models.interactions.interactions import Interaction, InteractionResponse
from .models.message import Embed, File, AllowedMentions, Message from .models.message import Embed, File, AllowedMentions, Message
from .exceptions import EmbedFieldError from .exceptions import EmbedFieldError
from .core.http import HTTPClient from .core.http import HTTPClient
@ -1232,6 +1233,35 @@ class RESTApp:
) )
] ]
async def interaction_respond(
self, interaction: Interaction, interaction_response: InteractionResponse
):
"""|coro|
[**REST API**] Respond to an interaciton
Parameters
----------
interaction: :class:`~melisa.models.interactions.interactions.Interaction`
Interaction to respond to
interaction_response: :class:`~melisa.models.interactions.interactions.InteractionResponse`
InteractionResponse`e``
Raises
-------
HTTPException
The request to perform the action failed with other http exception.
ForbiddenError
You do not have proper permissions to do the actions required.
BadRequestError
You provided a wrong arguments
"""
return await self._http.post(
f"/interactions/{interaction.id}/{interaction.token}/callback",
json=interaction_response.to_dict(),
)
class CDNBuilder: class CDNBuilder:
"""Can be used to build images """Can be used to build images