Allow more methods to set an audit log reason
This commit is contained in:
@ -28,6 +28,7 @@ import asyncio
|
||||
import json
|
||||
import time
|
||||
import re
|
||||
from urllib.parse import quote as _uriquote
|
||||
|
||||
import aiohttp
|
||||
|
||||
@ -84,11 +85,11 @@ class WebhookAdapter:
|
||||
"""
|
||||
raise NotImplementedError()
|
||||
|
||||
def delete_webhook(self):
|
||||
return self.request('DELETE', self._request_url)
|
||||
def delete_webhook(self, *, reason=None):
|
||||
return self.request('DELETE', self._request_url, reason=reason)
|
||||
|
||||
def edit_webhook(self, **payload):
|
||||
return self.request('PATCH', self._request_url, payload=payload)
|
||||
def edit_webhook(self, *, reason=None, **payload):
|
||||
return self.request('PATCH', self._request_url, payload=payload, reason=reason)
|
||||
|
||||
def handle_execution_response(self, data, *, wait):
|
||||
"""Transforms the webhook execution response into something
|
||||
@ -174,13 +175,16 @@ class AsyncWebhookAdapter(WebhookAdapter):
|
||||
self.session = session
|
||||
self.loop = asyncio.get_event_loop()
|
||||
|
||||
async def request(self, verb, url, payload=None, multipart=None, *, files=None):
|
||||
async def request(self, verb, url, payload=None, multipart=None, *, files=None, reason=None):
|
||||
headers = {}
|
||||
data = None
|
||||
files = files or []
|
||||
if payload:
|
||||
headers['Content-Type'] = 'application/json'
|
||||
data = utils.to_json(payload)
|
||||
|
||||
if reason:
|
||||
headers['X-Audit-Log-Reason'] = _uriquote(reason, safe='/ ')
|
||||
|
||||
if multipart:
|
||||
data = aiohttp.FormData()
|
||||
@ -260,13 +264,16 @@ class RequestsWebhookAdapter(WebhookAdapter):
|
||||
self.session = session or requests
|
||||
self.sleep = sleep
|
||||
|
||||
def request(self, verb, url, payload=None, multipart=None, *, files=None):
|
||||
def request(self, verb, url, payload=None, multipart=None, *, files=None, reason=None):
|
||||
headers = {}
|
||||
data = None
|
||||
files = files or []
|
||||
if payload:
|
||||
headers['Content-Type'] = 'application/json'
|
||||
data = utils.to_json(payload)
|
||||
|
||||
if reason:
|
||||
headers['X-Audit-Log-Reason'] = _uriquote(reason, safe='/ ')
|
||||
|
||||
if multipart is not None:
|
||||
data = {'payload_json': multipart.pop('payload_json')}
|
||||
@ -640,7 +647,7 @@ class Webhook(Hashable):
|
||||
url = '/avatars/{0.id}/{0.avatar}.{1}?size={2}'.format(self, format, size)
|
||||
return Asset(self._state, url)
|
||||
|
||||
def delete(self):
|
||||
def delete(self, *, reason=None):
|
||||
"""|maybecoro|
|
||||
|
||||
Deletes this Webhook.
|
||||
@ -648,6 +655,13 @@ class Webhook(Hashable):
|
||||
If the webhook is constructed with a :class:`RequestsWebhookAdapter` then this is
|
||||
not a coroutine.
|
||||
|
||||
Parameters
|
||||
------------
|
||||
reason: Optional[:class:`str`]
|
||||
The reason for deleting this webhook. Shows up on the audit log.
|
||||
|
||||
.. versionadded:: 1.4
|
||||
|
||||
Raises
|
||||
-------
|
||||
HTTPException
|
||||
@ -662,9 +676,9 @@ class Webhook(Hashable):
|
||||
if self.token is None:
|
||||
raise InvalidArgument('This webhook does not have a token associated with it')
|
||||
|
||||
return self._adapter.delete_webhook()
|
||||
return self._adapter.delete_webhook(reason=reason)
|
||||
|
||||
def edit(self, **kwargs):
|
||||
def edit(self, *, reason=None, **kwargs):
|
||||
"""|maybecoro|
|
||||
|
||||
Edits this Webhook.
|
||||
@ -673,11 +687,15 @@ class Webhook(Hashable):
|
||||
not a coroutine.
|
||||
|
||||
Parameters
|
||||
-------------
|
||||
------------
|
||||
name: Optional[:class:`str`]
|
||||
The webhook's new default name.
|
||||
avatar: Optional[:class:`bytes`]
|
||||
A :term:`py:bytes-like object` representing the webhook's new default avatar.
|
||||
reason: Optional[:class:`str`]
|
||||
The reason for deleting this webhook. Shows up on the audit log.
|
||||
|
||||
.. versionadded:: 1.4
|
||||
|
||||
Raises
|
||||
-------
|
||||
@ -713,7 +731,7 @@ class Webhook(Hashable):
|
||||
else:
|
||||
payload['avatar'] = None
|
||||
|
||||
return self._adapter.edit_webhook(**payload)
|
||||
return self._adapter.edit_webhook(reason=reason, **payload)
|
||||
|
||||
def send(self, content=None, *, wait=False, username=None, avatar_url=None, tts=False,
|
||||
file=None, files=None, embed=None, embeds=None, allowed_mentions=None):
|
||||
|
Reference in New Issue
Block a user