From 08470856614697e50419928ce6e24fb6291d95e9 Mon Sep 17 00:00:00 2001 From: MhmCats <71032999+MhmCats@users.noreply.github.com> Date: Wed, 2 Jun 2021 07:39:08 +0100 Subject: [PATCH] Add support for editing guild widgets --- discord/guild.py | 32 ++++++++++++++++++++++++++++++++ discord/http.py | 3 +++ 2 files changed, 35 insertions(+) diff --git a/discord/guild.py b/discord/guild.py index be2235592..452edff2f 100644 --- a/discord/guild.py +++ b/discord/guild.py @@ -2353,6 +2353,38 @@ class Guild(Hashable): data = await self._state.http.get_widget(self.id) return Widget(state=self._state, data=data) + + async def edit_widget(self, *, enabled: bool = utils.MISSING, channel: Optional[abc.Snowflake] = utils.MISSING) -> None: + """|coro| + + Edits the widget of the guild. + + You must have the :attr:`~Permissions.manage_guild` permission to + use this + + .. versionadded:: 2.0 + + Parameters + ----------- + enabled: :class:`bool` + Whether to enable the widget for the guild. + channel: Optional[:class:`~discord.abc.Snowflake`] + The new widget channel. ``None`` removes the widget channel. + + Raises + ------- + Forbidden + You do not have permission to edit the widget. + HTTPException + Editing the widget failed. + """ + payload = {} + if channel is not utils.MISSING: + payload['channel_id'] = None if channel is None else channel.id + if enabled is not utils.MISSING: + payload['enabled'] = enabled + + await self._state.http.edit_widget(self.id, payload=payload) async def chunk(self, *, cache: bool = True) -> None: """|coro| diff --git a/discord/http.py b/discord/http.py index 4dfea5da3..9a9b85160 100644 --- a/discord/http.py +++ b/discord/http.py @@ -971,6 +971,9 @@ class HTTPClient: def get_widget(self, guild_id): return self.request(Route('GET', '/guilds/{guild_id}/widget.json', guild_id=guild_id)) + + def edit_widget(self, guild_id, payload): + return self.request(Route('PATCH', '/guilds/{guild_id}/widget', guild_id=guild_id), json=payload) # Invite management