diff --git a/discord/channel.py b/discord/channel.py index e3055f88c..0d472a117 100644 --- a/discord/channel.py +++ b/discord/channel.py @@ -403,13 +403,16 @@ class TextChannel(discord.abc.Messageable, discord.abc.GuildChannel, Hashable): data = await self._state.http.channel_webhooks(self.id) return [Webhook.from_state(d, state=self._state) for d in data] - async def create_webhook(self, *, name, avatar=None): + async def create_webhook(self, *, name, avatar=None, reason=None): """|coro| Creates a webhook for this channel. Requires :attr:`~.Permissions.manage_webhooks` permissions. + .. versionchanged:: 1.1.0 + Added the ``reason`` keyword-only parameter. + Parameters ------------- name: :class:`str` @@ -417,6 +420,8 @@ class TextChannel(discord.abc.Messageable, discord.abc.GuildChannel, Hashable): avatar: Optional[:class:`bytes`] A :term:`py:bytes-like object` representing the webhook's default avatar. This operates similarly to :meth:`~ClientUser.edit`. + reason: Optional[:class:`str`] + The reason for creating this webhook. Shows up in the audit logs. Raises ------- @@ -434,7 +439,7 @@ class TextChannel(discord.abc.Messageable, discord.abc.GuildChannel, Hashable): if avatar is not None: avatar = utils._bytes_to_base64_data(avatar) - data = await self._state.http.create_webhook(self.id, name=str(name), avatar=avatar) + data = await self._state.http.create_webhook(self.id, name=str(name), avatar=avatar, reason=reason) return Webhook.from_state(data, state=self._state) class VoiceChannel(discord.abc.Connectable, discord.abc.GuildChannel, Hashable): diff --git a/discord/http.py b/discord/http.py index 36de7dba2..85062e2d0 100644 --- a/discord/http.py +++ b/discord/http.py @@ -537,14 +537,15 @@ class HTTPClient: # Webhook management - def create_webhook(self, channel_id, *, name, avatar=None): + def create_webhook(self, channel_id, *, name, avatar=None, reason=None): payload = { 'name': name } if avatar is not None: payload['avatar'] = avatar - return self.request(Route('POST', '/channels/{channel_id}/webhooks', channel_id=channel_id), json=payload) + r = Route('POST', '/channels/{channel_id}/webhooks', channel_id=channel_id) + return self.request(r, json=payload, reason=reason) def channel_webhooks(self, channel_id): return self.request(Route('GET', '/channels/{channel_id}/webhooks', channel_id=channel_id))