From 0668bc7afcdc7710567e6f7fd7aed3f5ae3f88ea Mon Sep 17 00:00:00 2001 From: Lacosst0 Date: Mon, 3 Jun 2024 19:29:45 +0400 Subject: [PATCH 1/4] feat: add delete_message to Webhook --- interactions/models/discord/webhooks.py | 27 +++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/interactions/models/discord/webhooks.py b/interactions/models/discord/webhooks.py index 4d88f8534..0473f9641 100644 --- a/interactions/models/discord/webhooks.py +++ b/interactions/models/discord/webhooks.py @@ -1,3 +1,4 @@ +import asyncio import re from enum import IntEnum from typing import Optional, TYPE_CHECKING, Union, Dict, Any, List @@ -313,3 +314,29 @@ async def edit_message( ) if msg_data: return self._client.cache.place_message_data(msg_data) + + async def delete_message( + self, + message: Union["Message", "Snowflake_Type"], + *, + delay: int = 0, + ) -> None: + """ + Delete a message as this webhook. + + Args: + message: Message to delete + delay: Seconds to wait before deleting message. + + """ + + async def _delete() -> None: + if delay: + await asyncio.sleep(delay) + + await self._client.http.delete_webhook_message(self.id, self.token, to_snowflake(message)) + + if delay: + return asyncio.create_task(_delete()) + + return await _delete() \ No newline at end of file From 7f06852c564f82ec43d0195700428e151284261a Mon Sep 17 00:00:00 2001 From: Lacosst0 Date: Mon, 3 Jun 2024 20:28:27 +0400 Subject: [PATCH 2/4] feat: add get_message to Webhook --- interactions/models/discord/webhooks.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/interactions/models/discord/webhooks.py b/interactions/models/discord/webhooks.py index 0473f9641..815c330a5 100644 --- a/interactions/models/discord/webhooks.py +++ b/interactions/models/discord/webhooks.py @@ -257,6 +257,22 @@ async def send( if message_data: return self._client.cache.place_message_data(message_data) + async def get_message(self, message_id: Union["Message", "Snowflake_Type"]) -> Optional["Message"]: + """ + Returns a previously-sent webhook message from the same token. Returns a message object on success. + + Args: + message_id: ID of message to retrieve. + + Returns: + The message object fetched. If the message is not found, returns None. + + """ + message_id = to_snowflake(message_id) + msg_data = await self._client.http.get_webhook_message(self.id, self.token, message_id) + if msg_data: + return self._client.cache.place_message_data(msg_data) + async def edit_message( self, message: Union["Message", "Snowflake_Type"], From 1db9ca937d0fb55c24177bc960e3ab87ae0aaf01 Mon Sep 17 00:00:00 2001 From: Lacosst0 Date: Mon, 3 Jun 2024 20:59:24 +0400 Subject: [PATCH 3/4] fix: make get_message return None --- interactions/models/discord/webhooks.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/interactions/models/discord/webhooks.py b/interactions/models/discord/webhooks.py index 815c330a5..7d6aabf16 100644 --- a/interactions/models/discord/webhooks.py +++ b/interactions/models/discord/webhooks.py @@ -6,7 +6,7 @@ import attrs from interactions.client.const import MISSING, Absent -from interactions.client.errors import ForeignWebhookException, EmptyMessageException +from interactions.client.errors import ForeignWebhookException, EmptyMessageException, NotFound from interactions.client.mixins.send import SendMixin from interactions.client.utils.serializer import to_image_data from interactions.models.discord.message import process_message_payload @@ -269,9 +269,11 @@ async def get_message(self, message_id: Union["Message", "Snowflake_Type"]) -> O """ message_id = to_snowflake(message_id) - msg_data = await self._client.http.get_webhook_message(self.id, self.token, message_id) - if msg_data: - return self._client.cache.place_message_data(msg_data) + try: + msg_data = await self._client.http.get_webhook_message(self.id, self.token, message_id) + except NotFound: + return None + return self._client.cache.place_message_data(msg_data) async def edit_message( self, @@ -355,4 +357,4 @@ async def _delete() -> None: if delay: return asyncio.create_task(_delete()) - return await _delete() \ No newline at end of file + return await _delete() From b84f7e873ab9b635ec7b141dcf9fec486148cb11 Mon Sep 17 00:00:00 2001 From: Lacosst0 Date: Mon, 3 Jun 2024 21:15:52 +0400 Subject: [PATCH 4/4] style: rename get_message to fetch_message to match library naming scheme --- interactions/models/discord/webhooks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interactions/models/discord/webhooks.py b/interactions/models/discord/webhooks.py index 7d6aabf16..f474662fd 100644 --- a/interactions/models/discord/webhooks.py +++ b/interactions/models/discord/webhooks.py @@ -257,7 +257,7 @@ async def send( if message_data: return self._client.cache.place_message_data(message_data) - async def get_message(self, message_id: Union["Message", "Snowflake_Type"]) -> Optional["Message"]: + async def fetch_message(self, message_id: Union["Message", "Snowflake_Type"]) -> Optional["Message"]: """ Returns a previously-sent webhook message from the same token. Returns a message object on success.