mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-06-07 04:17:16 +00:00
Propagate thread_id in webhook message methods
This also adds the remaining thread parameters where they were missing
This commit is contained in:
parent
6dc314628e
commit
cf2707b2fb
@ -296,6 +296,7 @@ class AsyncWebhookAdapter:
|
|||||||
message_id: int,
|
message_id: int,
|
||||||
*,
|
*,
|
||||||
session: aiohttp.ClientSession,
|
session: aiohttp.ClientSession,
|
||||||
|
thread_id: Optional[int] = None,
|
||||||
) -> Response[MessagePayload]:
|
) -> Response[MessagePayload]:
|
||||||
route = Route(
|
route = Route(
|
||||||
'GET',
|
'GET',
|
||||||
@ -304,7 +305,8 @@ class AsyncWebhookAdapter:
|
|||||||
webhook_token=token,
|
webhook_token=token,
|
||||||
message_id=message_id,
|
message_id=message_id,
|
||||||
)
|
)
|
||||||
return self.request(route, session)
|
params = None if thread_id is None else {'thread_id': thread_id}
|
||||||
|
return self.request(route, session, params=params)
|
||||||
|
|
||||||
def edit_webhook_message(
|
def edit_webhook_message(
|
||||||
self,
|
self,
|
||||||
@ -316,6 +318,7 @@ class AsyncWebhookAdapter:
|
|||||||
payload: Optional[Dict[str, Any]] = None,
|
payload: Optional[Dict[str, Any]] = None,
|
||||||
multipart: Optional[List[Dict[str, Any]]] = None,
|
multipart: Optional[List[Dict[str, Any]]] = None,
|
||||||
files: Optional[Sequence[File]] = None,
|
files: Optional[Sequence[File]] = None,
|
||||||
|
thread_id: Optional[int] = None,
|
||||||
) -> Response[Message]:
|
) -> Response[Message]:
|
||||||
route = Route(
|
route = Route(
|
||||||
'PATCH',
|
'PATCH',
|
||||||
@ -324,7 +327,8 @@ class AsyncWebhookAdapter:
|
|||||||
webhook_token=token,
|
webhook_token=token,
|
||||||
message_id=message_id,
|
message_id=message_id,
|
||||||
)
|
)
|
||||||
return self.request(route, session, payload=payload, multipart=multipart, files=files)
|
params = None if thread_id is None else {'thread_id': thread_id}
|
||||||
|
return self.request(route, session, payload=payload, multipart=multipart, files=files, params=params)
|
||||||
|
|
||||||
def delete_webhook_message(
|
def delete_webhook_message(
|
||||||
self,
|
self,
|
||||||
@ -333,6 +337,7 @@ class AsyncWebhookAdapter:
|
|||||||
message_id: int,
|
message_id: int,
|
||||||
*,
|
*,
|
||||||
session: aiohttp.ClientSession,
|
session: aiohttp.ClientSession,
|
||||||
|
thread_id: Optional[int] = None,
|
||||||
) -> Response[None]:
|
) -> Response[None]:
|
||||||
route = Route(
|
route = Route(
|
||||||
'DELETE',
|
'DELETE',
|
||||||
@ -341,7 +346,8 @@ class AsyncWebhookAdapter:
|
|||||||
webhook_token=token,
|
webhook_token=token,
|
||||||
message_id=message_id,
|
message_id=message_id,
|
||||||
)
|
)
|
||||||
return self.request(route, session)
|
params = None if thread_id is None else {'thread_id': thread_id}
|
||||||
|
return self.request(route, session, params=params)
|
||||||
|
|
||||||
def fetch_webhook(
|
def fetch_webhook(
|
||||||
self,
|
self,
|
||||||
@ -614,9 +620,9 @@ class _FriendlyHttpAttributeErrorHelper:
|
|||||||
|
|
||||||
|
|
||||||
class _WebhookState:
|
class _WebhookState:
|
||||||
__slots__ = ('_parent', '_webhook')
|
__slots__ = ('_parent', '_webhook', '_thread')
|
||||||
|
|
||||||
def __init__(self, webhook: Any, parent: Optional[_State]):
|
def __init__(self, webhook: Any, parent: Optional[_State], thread: Snowflake = MISSING):
|
||||||
self._webhook: Any = webhook
|
self._webhook: Any = webhook
|
||||||
|
|
||||||
self._parent: Optional[ConnectionState]
|
self._parent: Optional[ConnectionState]
|
||||||
@ -625,6 +631,8 @@ class _WebhookState:
|
|||||||
else:
|
else:
|
||||||
self._parent = parent
|
self._parent = parent
|
||||||
|
|
||||||
|
self._thread: Snowflake = thread
|
||||||
|
|
||||||
def _get_guild(self, guild_id: Optional[int]) -> Optional[Guild]:
|
def _get_guild(self, guild_id: Optional[int]) -> Optional[Guild]:
|
||||||
if self._parent is not None:
|
if self._parent is not None:
|
||||||
return self._parent._get_guild(guild_id)
|
return self._parent._get_guild(guild_id)
|
||||||
@ -744,6 +752,7 @@ class WebhookMessage(Message):
|
|||||||
attachments=attachments,
|
attachments=attachments,
|
||||||
view=view,
|
view=view,
|
||||||
allowed_mentions=allowed_mentions,
|
allowed_mentions=allowed_mentions,
|
||||||
|
thread=self._state._thread,
|
||||||
)
|
)
|
||||||
|
|
||||||
async def add_files(self, *files: File) -> WebhookMessage:
|
async def add_files(self, *files: File) -> WebhookMessage:
|
||||||
@ -824,13 +833,13 @@ class WebhookMessage(Message):
|
|||||||
async def inner_call(delay: float = delay):
|
async def inner_call(delay: float = delay):
|
||||||
await asyncio.sleep(delay)
|
await asyncio.sleep(delay)
|
||||||
try:
|
try:
|
||||||
await self._state._webhook.delete_message(self.id)
|
await self._state._webhook.delete_message(self.id, thread=self._state._thread)
|
||||||
except HTTPException:
|
except HTTPException:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
asyncio.create_task(inner_call())
|
asyncio.create_task(inner_call())
|
||||||
else:
|
else:
|
||||||
await self._state._webhook.delete_message(self.id)
|
await self._state._webhook.delete_message(self.id, thread=self._state._thread)
|
||||||
|
|
||||||
|
|
||||||
class BaseWebhook(Hashable):
|
class BaseWebhook(Hashable):
|
||||||
@ -1316,8 +1325,8 @@ class Webhook(BaseWebhook):
|
|||||||
|
|
||||||
return Webhook(data=data, session=self.session, token=self.auth_token, state=self._state)
|
return Webhook(data=data, session=self.session, token=self.auth_token, state=self._state)
|
||||||
|
|
||||||
def _create_message(self, data):
|
def _create_message(self, data, *, thread: Snowflake):
|
||||||
state = _WebhookState(self, parent=self._state)
|
state = _WebhookState(self, parent=self._state, thread=thread)
|
||||||
# state may be artificial (unlikely at this point...)
|
# state may be artificial (unlikely at this point...)
|
||||||
channel = self.channel or PartialMessageable(state=self._state, id=int(data['channel_id'])) # type: ignore
|
channel = self.channel or PartialMessageable(state=self._state, id=int(data['channel_id'])) # type: ignore
|
||||||
# state is artificial
|
# state is artificial
|
||||||
@ -1540,7 +1549,7 @@ class Webhook(BaseWebhook):
|
|||||||
|
|
||||||
msg = None
|
msg = None
|
||||||
if wait:
|
if wait:
|
||||||
msg = self._create_message(data)
|
msg = self._create_message(data, thread=thread)
|
||||||
|
|
||||||
if view is not MISSING and not view.is_finished():
|
if view is not MISSING and not view.is_finished():
|
||||||
message_id = None if msg is None else msg.id
|
message_id = None if msg is None else msg.id
|
||||||
@ -1548,7 +1557,7 @@ class Webhook(BaseWebhook):
|
|||||||
|
|
||||||
return msg
|
return msg
|
||||||
|
|
||||||
async def fetch_message(self, id: int, /) -> WebhookMessage:
|
async def fetch_message(self, id: int, /, *, thread: Snowflake = MISSING) -> WebhookMessage:
|
||||||
"""|coro|
|
"""|coro|
|
||||||
|
|
||||||
Retrieves a single :class:`~discord.WebhookMessage` owned by this webhook.
|
Retrieves a single :class:`~discord.WebhookMessage` owned by this webhook.
|
||||||
@ -1559,6 +1568,8 @@ class Webhook(BaseWebhook):
|
|||||||
------------
|
------------
|
||||||
id: :class:`int`
|
id: :class:`int`
|
||||||
The message ID to look for.
|
The message ID to look for.
|
||||||
|
thread: :class:`~discord.abc.Snowflake`
|
||||||
|
The thread to look in.
|
||||||
|
|
||||||
Raises
|
Raises
|
||||||
--------
|
--------
|
||||||
@ -1580,14 +1591,19 @@ class Webhook(BaseWebhook):
|
|||||||
if self.token is None:
|
if self.token is None:
|
||||||
raise ValueError('This webhook does not have a token associated with it')
|
raise ValueError('This webhook does not have a token associated with it')
|
||||||
|
|
||||||
|
thread_id: Optional[int] = None
|
||||||
|
if thread is not MISSING:
|
||||||
|
thread_id = thread.id
|
||||||
|
|
||||||
adapter = async_context.get()
|
adapter = async_context.get()
|
||||||
data = await adapter.get_webhook_message(
|
data = await adapter.get_webhook_message(
|
||||||
self.id,
|
self.id,
|
||||||
self.token,
|
self.token,
|
||||||
id,
|
id,
|
||||||
session=self.session,
|
session=self.session,
|
||||||
|
thread_id=thread_id,
|
||||||
)
|
)
|
||||||
return self._create_message(data)
|
return self._create_message(data, thread=thread)
|
||||||
|
|
||||||
async def edit_message(
|
async def edit_message(
|
||||||
self,
|
self,
|
||||||
@ -1599,6 +1615,7 @@ class Webhook(BaseWebhook):
|
|||||||
attachments: Sequence[Union[Attachment, File]] = MISSING,
|
attachments: Sequence[Union[Attachment, File]] = MISSING,
|
||||||
view: Optional[View] = MISSING,
|
view: Optional[View] = MISSING,
|
||||||
allowed_mentions: Optional[AllowedMentions] = None,
|
allowed_mentions: Optional[AllowedMentions] = None,
|
||||||
|
thread: Snowflake = MISSING,
|
||||||
) -> WebhookMessage:
|
) -> WebhookMessage:
|
||||||
"""|coro|
|
"""|coro|
|
||||||
|
|
||||||
@ -1640,6 +1657,10 @@ class Webhook(BaseWebhook):
|
|||||||
the view is removed. The webhook must have state attached, similar to
|
the view is removed. The webhook must have state attached, similar to
|
||||||
:meth:`send`.
|
:meth:`send`.
|
||||||
|
|
||||||
|
.. versionadded:: 2.0
|
||||||
|
thread: :class:`~discord.abc.Snowflake`
|
||||||
|
The thread the webhook message belongs to.
|
||||||
|
|
||||||
.. versionadded:: 2.0
|
.. versionadded:: 2.0
|
||||||
|
|
||||||
Raises
|
Raises
|
||||||
@ -1680,6 +1701,11 @@ class Webhook(BaseWebhook):
|
|||||||
allowed_mentions=allowed_mentions,
|
allowed_mentions=allowed_mentions,
|
||||||
previous_allowed_mentions=previous_mentions,
|
previous_allowed_mentions=previous_mentions,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
thread_id: Optional[int] = None
|
||||||
|
if thread is not MISSING:
|
||||||
|
thread_id = thread.id
|
||||||
|
|
||||||
adapter = async_context.get()
|
adapter = async_context.get()
|
||||||
data = await adapter.edit_webhook_message(
|
data = await adapter.edit_webhook_message(
|
||||||
self.id,
|
self.id,
|
||||||
@ -1689,14 +1715,15 @@ class Webhook(BaseWebhook):
|
|||||||
payload=params.payload,
|
payload=params.payload,
|
||||||
multipart=params.multipart,
|
multipart=params.multipart,
|
||||||
files=params.files,
|
files=params.files,
|
||||||
|
thread_id=thread_id,
|
||||||
)
|
)
|
||||||
|
|
||||||
message = self._create_message(data)
|
message = self._create_message(data, thread=thread)
|
||||||
if view and not view.is_finished():
|
if view and not view.is_finished():
|
||||||
self._state.store_view(view, message_id)
|
self._state.store_view(view, message_id)
|
||||||
return message
|
return message
|
||||||
|
|
||||||
async def delete_message(self, message_id: int, /) -> None:
|
async def delete_message(self, message_id: int, /, *, thread: Snowflake = MISSING) -> None:
|
||||||
"""|coro|
|
"""|coro|
|
||||||
|
|
||||||
Deletes a message owned by this webhook.
|
Deletes a message owned by this webhook.
|
||||||
@ -1718,6 +1745,10 @@ class Webhook(BaseWebhook):
|
|||||||
------------
|
------------
|
||||||
message_id: :class:`int`
|
message_id: :class:`int`
|
||||||
The message ID to delete.
|
The message ID to delete.
|
||||||
|
thread: :class:`~discord.abc.Snowflake`
|
||||||
|
The thread the webhook message belongs to.
|
||||||
|
|
||||||
|
.. versionadded:: 2.0
|
||||||
|
|
||||||
Raises
|
Raises
|
||||||
-------
|
-------
|
||||||
@ -1731,10 +1762,15 @@ class Webhook(BaseWebhook):
|
|||||||
if self.token is None:
|
if self.token is None:
|
||||||
raise ValueError('This webhook does not have a token associated with it')
|
raise ValueError('This webhook does not have a token associated with it')
|
||||||
|
|
||||||
|
thread_id: Optional[int] = None
|
||||||
|
if thread is not MISSING:
|
||||||
|
thread_id = thread.id
|
||||||
|
|
||||||
adapter = async_context.get()
|
adapter = async_context.get()
|
||||||
await adapter.delete_webhook_message(
|
await adapter.delete_webhook_message(
|
||||||
self.id,
|
self.id,
|
||||||
self.token,
|
self.token,
|
||||||
message_id,
|
message_id,
|
||||||
session=self.session,
|
session=self.session,
|
||||||
|
thread_id=thread_id,
|
||||||
)
|
)
|
||||||
|
@ -296,6 +296,7 @@ class WebhookAdapter:
|
|||||||
message_id: int,
|
message_id: int,
|
||||||
*,
|
*,
|
||||||
session: Session,
|
session: Session,
|
||||||
|
thread_id: Optional[int] = None,
|
||||||
) -> MessagePayload:
|
) -> MessagePayload:
|
||||||
route = Route(
|
route = Route(
|
||||||
'GET',
|
'GET',
|
||||||
@ -304,7 +305,8 @@ class WebhookAdapter:
|
|||||||
webhook_token=token,
|
webhook_token=token,
|
||||||
message_id=message_id,
|
message_id=message_id,
|
||||||
)
|
)
|
||||||
return self.request(route, session)
|
params = None if thread_id is None else {'thread_id': thread_id}
|
||||||
|
return self.request(route, session, params=params)
|
||||||
|
|
||||||
def edit_webhook_message(
|
def edit_webhook_message(
|
||||||
self,
|
self,
|
||||||
@ -316,6 +318,7 @@ class WebhookAdapter:
|
|||||||
payload: Optional[Dict[str, Any]] = None,
|
payload: Optional[Dict[str, Any]] = None,
|
||||||
multipart: Optional[List[Dict[str, Any]]] = None,
|
multipart: Optional[List[Dict[str, Any]]] = None,
|
||||||
files: Optional[Sequence[File]] = None,
|
files: Optional[Sequence[File]] = None,
|
||||||
|
thread_id: Optional[int] = None,
|
||||||
) -> MessagePayload:
|
) -> MessagePayload:
|
||||||
route = Route(
|
route = Route(
|
||||||
'PATCH',
|
'PATCH',
|
||||||
@ -324,7 +327,8 @@ class WebhookAdapter:
|
|||||||
webhook_token=token,
|
webhook_token=token,
|
||||||
message_id=message_id,
|
message_id=message_id,
|
||||||
)
|
)
|
||||||
return self.request(route, session, payload=payload, multipart=multipart, files=files)
|
params = None if thread_id is None else {'thread_id': thread_id}
|
||||||
|
return self.request(route, session, payload=payload, multipart=multipart, files=files, params=params)
|
||||||
|
|
||||||
def delete_webhook_message(
|
def delete_webhook_message(
|
||||||
self,
|
self,
|
||||||
@ -333,6 +337,7 @@ class WebhookAdapter:
|
|||||||
message_id: int,
|
message_id: int,
|
||||||
*,
|
*,
|
||||||
session: Session,
|
session: Session,
|
||||||
|
thread_id: Optional[int] = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
route = Route(
|
route = Route(
|
||||||
'DELETE',
|
'DELETE',
|
||||||
@ -341,7 +346,8 @@ class WebhookAdapter:
|
|||||||
webhook_token=token,
|
webhook_token=token,
|
||||||
message_id=message_id,
|
message_id=message_id,
|
||||||
)
|
)
|
||||||
return self.request(route, session)
|
params = None if thread_id is None else {'thread_id': thread_id}
|
||||||
|
return self.request(route, session, params=params)
|
||||||
|
|
||||||
def fetch_webhook(
|
def fetch_webhook(
|
||||||
self,
|
self,
|
||||||
@ -451,6 +457,7 @@ class SyncWebhookMessage(Message):
|
|||||||
embed=embed,
|
embed=embed,
|
||||||
attachments=attachments,
|
attachments=attachments,
|
||||||
allowed_mentions=allowed_mentions,
|
allowed_mentions=allowed_mentions,
|
||||||
|
thread=self._state._thread,
|
||||||
)
|
)
|
||||||
|
|
||||||
def add_files(self, *files: File) -> SyncWebhookMessage:
|
def add_files(self, *files: File) -> SyncWebhookMessage:
|
||||||
@ -522,7 +529,7 @@ class SyncWebhookMessage(Message):
|
|||||||
|
|
||||||
if delay is not None:
|
if delay is not None:
|
||||||
time.sleep(delay)
|
time.sleep(delay)
|
||||||
self._state._webhook.delete_message(self.id)
|
self._state._webhook.delete_message(self.id, thread=self._state._thread)
|
||||||
|
|
||||||
|
|
||||||
class SyncWebhook(BaseWebhook):
|
class SyncWebhook(BaseWebhook):
|
||||||
@ -832,8 +839,8 @@ class SyncWebhook(BaseWebhook):
|
|||||||
|
|
||||||
return SyncWebhook(data=data, session=self.session, token=self.auth_token, state=self._state)
|
return SyncWebhook(data=data, session=self.session, token=self.auth_token, state=self._state)
|
||||||
|
|
||||||
def _create_message(self, data: MessagePayload) -> SyncWebhookMessage:
|
def _create_message(self, data: MessagePayload, *, thread: Snowflake = MISSING) -> SyncWebhookMessage:
|
||||||
state = _WebhookState(self, parent=self._state)
|
state = _WebhookState(self, parent=self._state, thread=thread)
|
||||||
# state may be artificial (unlikely at this point...)
|
# state may be artificial (unlikely at this point...)
|
||||||
channel = self.channel or PartialMessageable(state=self._state, id=int(data['channel_id'])) # type: ignore
|
channel = self.channel or PartialMessageable(state=self._state, id=int(data['channel_id'])) # type: ignore
|
||||||
# state is artificial
|
# state is artificial
|
||||||
@ -852,6 +859,7 @@ class SyncWebhook(BaseWebhook):
|
|||||||
embed: Embed = MISSING,
|
embed: Embed = MISSING,
|
||||||
embeds: Sequence[Embed] = MISSING,
|
embeds: Sequence[Embed] = MISSING,
|
||||||
allowed_mentions: AllowedMentions = MISSING,
|
allowed_mentions: AllowedMentions = MISSING,
|
||||||
|
thread: Snowflake = MISSING,
|
||||||
wait: Literal[True],
|
wait: Literal[True],
|
||||||
suppress_embeds: bool = MISSING,
|
suppress_embeds: bool = MISSING,
|
||||||
) -> SyncWebhookMessage:
|
) -> SyncWebhookMessage:
|
||||||
@ -870,6 +878,7 @@ class SyncWebhook(BaseWebhook):
|
|||||||
embed: Embed = MISSING,
|
embed: Embed = MISSING,
|
||||||
embeds: Sequence[Embed] = MISSING,
|
embeds: Sequence[Embed] = MISSING,
|
||||||
allowed_mentions: AllowedMentions = MISSING,
|
allowed_mentions: AllowedMentions = MISSING,
|
||||||
|
thread: Snowflake = MISSING,
|
||||||
wait: Literal[False] = ...,
|
wait: Literal[False] = ...,
|
||||||
suppress_embeds: bool = MISSING,
|
suppress_embeds: bool = MISSING,
|
||||||
) -> None:
|
) -> None:
|
||||||
@ -1004,9 +1013,9 @@ class SyncWebhook(BaseWebhook):
|
|||||||
wait=wait,
|
wait=wait,
|
||||||
)
|
)
|
||||||
if wait:
|
if wait:
|
||||||
return self._create_message(data)
|
return self._create_message(data, thread=thread)
|
||||||
|
|
||||||
def fetch_message(self, id: int, /) -> SyncWebhookMessage:
|
def fetch_message(self, id: int, /, *, thread: Snowflake = MISSING) -> SyncWebhookMessage:
|
||||||
"""Retrieves a single :class:`~discord.SyncWebhookMessage` owned by this webhook.
|
"""Retrieves a single :class:`~discord.SyncWebhookMessage` owned by this webhook.
|
||||||
|
|
||||||
.. versionadded:: 2.0
|
.. versionadded:: 2.0
|
||||||
@ -1015,6 +1024,8 @@ class SyncWebhook(BaseWebhook):
|
|||||||
------------
|
------------
|
||||||
id: :class:`int`
|
id: :class:`int`
|
||||||
The message ID to look for.
|
The message ID to look for.
|
||||||
|
thread: :class:`~discord.abc.Snowflake`
|
||||||
|
The thread to look in.
|
||||||
|
|
||||||
Raises
|
Raises
|
||||||
--------
|
--------
|
||||||
@ -1036,14 +1047,19 @@ class SyncWebhook(BaseWebhook):
|
|||||||
if self.token is None:
|
if self.token is None:
|
||||||
raise ValueError('This webhook does not have a token associated with it')
|
raise ValueError('This webhook does not have a token associated with it')
|
||||||
|
|
||||||
|
thread_id: Optional[int] = None
|
||||||
|
if thread is not MISSING:
|
||||||
|
thread_id = thread.id
|
||||||
|
|
||||||
adapter: WebhookAdapter = _get_webhook_adapter()
|
adapter: WebhookAdapter = _get_webhook_adapter()
|
||||||
data = adapter.get_webhook_message(
|
data = adapter.get_webhook_message(
|
||||||
self.id,
|
self.id,
|
||||||
self.token,
|
self.token,
|
||||||
id,
|
id,
|
||||||
session=self.session,
|
session=self.session,
|
||||||
|
thread_id=thread_id,
|
||||||
)
|
)
|
||||||
return self._create_message(data)
|
return self._create_message(data, thread=thread)
|
||||||
|
|
||||||
def edit_message(
|
def edit_message(
|
||||||
self,
|
self,
|
||||||
@ -1054,6 +1070,7 @@ class SyncWebhook(BaseWebhook):
|
|||||||
embed: Optional[Embed] = MISSING,
|
embed: Optional[Embed] = MISSING,
|
||||||
attachments: Sequence[Union[Attachment, File]] = MISSING,
|
attachments: Sequence[Union[Attachment, File]] = MISSING,
|
||||||
allowed_mentions: Optional[AllowedMentions] = None,
|
allowed_mentions: Optional[AllowedMentions] = None,
|
||||||
|
thread: Snowflake = MISSING,
|
||||||
) -> SyncWebhookMessage:
|
) -> SyncWebhookMessage:
|
||||||
"""Edits a message owned by this webhook.
|
"""Edits a message owned by this webhook.
|
||||||
|
|
||||||
@ -1081,6 +1098,10 @@ class SyncWebhook(BaseWebhook):
|
|||||||
allowed_mentions: :class:`AllowedMentions`
|
allowed_mentions: :class:`AllowedMentions`
|
||||||
Controls the mentions being processed in this message.
|
Controls the mentions being processed in this message.
|
||||||
See :meth:`.abc.Messageable.send` for more information.
|
See :meth:`.abc.Messageable.send` for more information.
|
||||||
|
thread: :class:`~discord.abc.Snowflake`
|
||||||
|
The thread the webhook message belongs to.
|
||||||
|
|
||||||
|
.. versionadded:: 2.0
|
||||||
|
|
||||||
Raises
|
Raises
|
||||||
-------
|
-------
|
||||||
@ -1107,6 +1128,11 @@ class SyncWebhook(BaseWebhook):
|
|||||||
allowed_mentions=allowed_mentions,
|
allowed_mentions=allowed_mentions,
|
||||||
previous_allowed_mentions=previous_mentions,
|
previous_allowed_mentions=previous_mentions,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
thread_id: Optional[int] = None
|
||||||
|
if thread is not MISSING:
|
||||||
|
thread_id = thread.id
|
||||||
|
|
||||||
adapter: WebhookAdapter = _get_webhook_adapter()
|
adapter: WebhookAdapter = _get_webhook_adapter()
|
||||||
data = adapter.edit_webhook_message(
|
data = adapter.edit_webhook_message(
|
||||||
self.id,
|
self.id,
|
||||||
@ -1116,10 +1142,11 @@ class SyncWebhook(BaseWebhook):
|
|||||||
payload=params.payload,
|
payload=params.payload,
|
||||||
multipart=params.multipart,
|
multipart=params.multipart,
|
||||||
files=params.files,
|
files=params.files,
|
||||||
|
thread_id=thread_id,
|
||||||
)
|
)
|
||||||
return self._create_message(data)
|
return self._create_message(data, thread=thread)
|
||||||
|
|
||||||
def delete_message(self, message_id: int, /) -> None:
|
def delete_message(self, message_id: int, /, *, thread: Snowflake = MISSING) -> None:
|
||||||
"""Deletes a message owned by this webhook.
|
"""Deletes a message owned by this webhook.
|
||||||
|
|
||||||
This is a lower level interface to :meth:`WebhookMessage.delete` in case
|
This is a lower level interface to :meth:`WebhookMessage.delete` in case
|
||||||
@ -1131,6 +1158,10 @@ class SyncWebhook(BaseWebhook):
|
|||||||
------------
|
------------
|
||||||
message_id: :class:`int`
|
message_id: :class:`int`
|
||||||
The message ID to delete.
|
The message ID to delete.
|
||||||
|
hread: :class:`~discord.abc.Snowflake`
|
||||||
|
The thread the webhook message belongs to.
|
||||||
|
|
||||||
|
.. versionadded:: 2.0
|
||||||
|
|
||||||
Raises
|
Raises
|
||||||
-------
|
-------
|
||||||
@ -1144,10 +1175,15 @@ class SyncWebhook(BaseWebhook):
|
|||||||
if self.token is None:
|
if self.token is None:
|
||||||
raise ValueError('This webhook does not have a token associated with it')
|
raise ValueError('This webhook does not have a token associated with it')
|
||||||
|
|
||||||
|
thread_id: Optional[int] = None
|
||||||
|
if thread is not MISSING:
|
||||||
|
thread_id = thread.id
|
||||||
|
|
||||||
adapter: WebhookAdapter = _get_webhook_adapter()
|
adapter: WebhookAdapter = _get_webhook_adapter()
|
||||||
adapter.delete_webhook_message(
|
adapter.delete_webhook_message(
|
||||||
self.id,
|
self.id,
|
||||||
self.token,
|
self.token,
|
||||||
message_id,
|
message_id,
|
||||||
session=self.session,
|
session=self.session,
|
||||||
|
thread_id=thread_id,
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user