Browse Source

Fix webhooks and interactions not closing files after a request

pull/10109/head
Rapptz 2 years ago
committed by dolfies
parent
commit
57b118b393
  1. 16
      discord/message.py
  2. 73
      discord/webhook/async_.py
  3. 70
      discord/webhook/sync.py

16
discord/message.py

@ -825,14 +825,14 @@ class PartialMessage(Hashable):
else:
previous_allowed_mentions = None
params = handle_message_parameters(
with handle_message_parameters(
content=content,
attachments=attachments,
allowed_mentions=allowed_mentions,
previous_allowed_mentions=previous_allowed_mentions,
)
data = await self._state.http.edit_message(self.channel.id, self.id, params=params)
message = Message(state=self._state, channel=self.channel, data=data)
) as params:
data = await self._state.http.edit_message(self.channel.id, self.id, params=params)
message = Message(state=self._state, channel=self.channel, data=data)
if delete_after is not None:
await self.delete(delay=delete_after)
@ -1999,15 +1999,15 @@ class Message(PartialMessage, Hashable):
else:
flags = MISSING
params = handle_message_parameters(
with handle_message_parameters(
content=content,
flags=flags,
attachments=attachments,
allowed_mentions=allowed_mentions,
previous_allowed_mentions=previous_allowed_mentions,
)
data = await self._state.http.edit_message(self.channel.id, self.id, params=params)
message = Message(state=self._state, channel=self.channel, data=data)
) as params:
data = await self._state.http.edit_message(self.channel.id, self.id, params=params)
message = Message(state=self._state, channel=self.channel, data=data)
if delete_after is not None:
await self.delete(delay=delete_after)

73
discord/webhook/async_.py

@ -1462,7 +1462,7 @@ class Webhook(BaseWebhook):
if thread_name is not MISSING and thread is not MISSING:
raise TypeError('Cannot mix thread_name and thread keyword arguments.')
params = handle_message_parameters(
with handle_message_parameters(
content=content,
username=username,
avatar_url=avatar_url,
@ -1475,24 +1475,24 @@ class Webhook(BaseWebhook):
thread_name=thread_name,
allowed_mentions=allowed_mentions,
previous_allowed_mentions=previous_mentions,
)
adapter = async_context.get()
thread_id: Optional[int] = None
if thread is not MISSING:
thread_id = thread.id
) as params:
adapter = async_context.get()
thread_id: Optional[int] = None
if thread is not MISSING:
thread_id = thread.id
data = await adapter.execute_webhook(
self.id,
self.token,
session=self.session,
proxy=self.proxy,
proxy_auth=self.proxy_auth,
payload=params.payload,
multipart=params.multipart,
files=params.files,
thread_id=thread_id,
wait=wait,
)
data = await adapter.execute_webhook(
self.id,
self.token,
session=self.session,
proxy=self.proxy,
proxy_auth=self.proxy_auth,
payload=params.payload,
multipart=params.multipart,
files=params.files,
thread_id=thread_id,
wait=wait,
)
msg = None
if wait:
@ -1624,32 +1624,31 @@ class Webhook(BaseWebhook):
raise ValueError('This webhook does not have a token associated with it')
previous_mentions: Optional[AllowedMentions] = getattr(self._state, 'allowed_mentions', None)
params = handle_message_parameters(
with handle_message_parameters(
content=content,
attachments=attachments,
embed=embed,
embeds=embeds,
allowed_mentions=allowed_mentions,
previous_allowed_mentions=previous_mentions,
)
) as params:
thread_id: Optional[int] = None
if thread is not MISSING:
thread_id = thread.id
thread_id: Optional[int] = None
if thread is not MISSING:
thread_id = thread.id
adapter = async_context.get()
data = await adapter.edit_webhook_message(
self.id,
self.token,
message_id,
session=self.session,
proxy=self.proxy,
proxy_auth=self.proxy_auth,
payload=params.payload,
multipart=params.multipart,
files=params.files,
thread_id=thread_id,
)
adapter = async_context.get()
data = await adapter.edit_webhook_message(
self.id,
self.token,
message_id,
session=self.session,
proxy=self.proxy,
proxy_auth=self.proxy_auth,
payload=params.payload,
multipart=params.multipart,
files=params.files,
thread_id=thread_id,
)
message = self._create_message(data, thread=thread)
return message

70
discord/webhook/sync.py

@ -1004,7 +1004,7 @@ class SyncWebhook(BaseWebhook):
if thread_name is not MISSING and thread is not MISSING:
raise TypeError('Cannot mix thread_name and thread keyword arguments.')
params = handle_message_parameters(
with handle_message_parameters(
content=content,
username=username,
avatar_url=avatar_url,
@ -1017,22 +1017,23 @@ class SyncWebhook(BaseWebhook):
allowed_mentions=allowed_mentions,
previous_allowed_mentions=previous_mentions,
flags=flags,
)
adapter: WebhookAdapter = _get_webhook_adapter()
thread_id: Optional[int] = None
if thread is not MISSING:
thread_id = thread.id
) as params:
adapter: WebhookAdapter = _get_webhook_adapter()
thread_id: Optional[int] = None
if thread is not MISSING:
thread_id = thread.id
data = adapter.execute_webhook(
self.id,
self.token,
session=self.session,
payload=params.payload,
multipart=params.multipart,
files=params.files,
thread_id=thread_id,
wait=wait,
)
data = adapter.execute_webhook(
self.id,
self.token,
session=self.session,
payload=params.payload,
multipart=params.multipart,
files=params.files,
thread_id=thread_id,
wait=wait,
)
if wait:
return self._create_message(data, thread=thread)
@ -1141,31 +1142,30 @@ class SyncWebhook(BaseWebhook):
raise ValueError('This webhook does not have a token associated with it')
previous_mentions: Optional[AllowedMentions] = getattr(self._state, 'allowed_mentions', None)
params = handle_message_parameters(
with handle_message_parameters(
content=content,
attachments=attachments,
embed=embed,
embeds=embeds,
allowed_mentions=allowed_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()
data = adapter.edit_webhook_message(
self.id,
self.token,
message_id,
session=self.session,
payload=params.payload,
multipart=params.multipart,
files=params.files,
thread_id=thread_id,
)
return self._create_message(data, thread=thread)
) as params:
thread_id: Optional[int] = None
if thread is not MISSING:
thread_id = thread.id
adapter: WebhookAdapter = _get_webhook_adapter()
data = adapter.edit_webhook_message(
self.id,
self.token,
message_id,
session=self.session,
payload=params.payload,
multipart=params.multipart,
files=params.files,
thread_id=thread_id,
)
return self._create_message(data, thread=thread)
def delete_message(self, message_id: int, /, *, thread: Snowflake = MISSING) -> None:
"""Deletes a message owned by this webhook.

Loading…
Cancel
Save