Allow editing of overwrites in Channel.edit()

This commit is contained in:
CapnS 2019-06-02 13:53:07 -05:00 committed by Rapptz
parent c62b6c3e88
commit 072cef3bb6
2 changed files with 43 additions and 2 deletions

View File

@ -259,6 +259,28 @@ class GuildChannel:
options['permission_overwrites'] = [c._asdict() for c in category._overwrites] options['permission_overwrites'] = [c._asdict() for c in category._overwrites]
else: else:
await self._move(position, parent_id=parent_id, lock_permissions=lock_permissions, reason=reason) await self._move(position, parent_id=parent_id, lock_permissions=lock_permissions, reason=reason)
overwrites = options.get('overwrites', None)
if overwrites:
perms = []
for target, perm in overwrites.items():
if not isinstance(perm, PermissionOverwrite):
raise InvalidArgument('Expected PermissionOverwrite received {0.__name__}'.format(type(perm)))
allow, deny = perm.pair()
payload = {
'allow': allow.value,
'deny': deny.value,
'id': target.id
}
if isinstance(target, Role):
payload['type'] = 'role'
else:
payload['type'] = 'member'
perms.append(payload)
options['permission_overwrites'] = perms
if options: if options:
data = await self._state.http.edit_channel(self.id, reason=reason, **options) data = await self._state.http.edit_channel(self.id, reason=reason, **options)

View File

@ -215,11 +215,17 @@ class TextChannel(discord.abc.Messageable, discord.abc.GuildChannel, Hashable):
A value of `0` disables slowmode. The maximum value possible is `21600`. A value of `0` disables slowmode. The maximum value possible is `21600`.
reason: Optional[:class:`str`] reason: Optional[:class:`str`]
The reason for editing this channel. Shows up on the audit log. The reason for editing this channel. Shows up on the audit log.
overwrites: :class:`dict`
A :class:`dict` of target (either a role or a member) to
:class:`PermissionOverwrite` to apply to the channel.
.. versionadded:: 1.3.0
Raises Raises
------ ------
InvalidArgument InvalidArgument
If position is less than 0 or greater than the number of channels. If position is less than 0 or greater than the number of channels, or if
the permission overwrite information is not in proper form.
Forbidden Forbidden
You do not have permissions to edit the channel. You do not have permissions to edit the channel.
HTTPException HTTPException
@ -654,9 +660,16 @@ class VoiceChannel(discord.abc.Connectable, discord.abc.GuildChannel, Hashable):
category. category.
reason: Optional[:class:`str`] reason: Optional[:class:`str`]
The reason for editing this channel. Shows up on the audit log. The reason for editing this channel. Shows up on the audit log.
overwrites: :class:`dict`
A :class:`dict` of target (either a role or a member) to
:class:`PermissionOverwrite` to apply to the channel.
.. versionadded:: 1.3.0
Raises Raises
------ ------
InvalidArgument
If the permission overwrite information is not in proper form.
Forbidden Forbidden
You do not have permissions to edit the channel. You do not have permissions to edit the channel.
HTTPException HTTPException
@ -933,11 +946,17 @@ class StoreChannel(discord.abc.GuildChannel, Hashable):
category. category.
reason: Optional[:class:`str`] reason: Optional[:class:`str`]
The reason for editing this channel. Shows up on the audit log. The reason for editing this channel. Shows up on the audit log.
overwrites: :class:`dict`
A :class:`dict` of target (either a role or a member) to
:class:`PermissionOverwrite` to apply to the channel.
.. versionadded:: 1.3
Raises Raises
------ ------
InvalidArgument InvalidArgument
If position is less than 0 or greater than the number of channels. If position is less than 0 or greater than the number of channels, or if
the permission overwrite information is not in proper form.
Forbidden Forbidden
You do not have permissions to edit the channel. You do not have permissions to edit the channel.
HTTPException HTTPException