From f45aef7c2eb4ba41370ec77d1a7871cdf7ee49b1 Mon Sep 17 00:00:00 2001 From: Michael H Date: Sun, 2 Dec 2018 17:55:00 -0500 Subject: [PATCH] Handle implicit perms in discord.VoiceChannel.permissions_for This adds some implicit permission handling for `discord.VoiceChannel.permissions_for` This is not documented behavior in discord's developer documentation, but it can easily be verified as correct. --- discord/channel.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/discord/channel.py b/discord/channel.py index 7cb007a31..b2086933f 100644 --- a/discord/channel.py +++ b/discord/channel.py @@ -460,6 +460,19 @@ class VoiceChannel(discord.abc.Connectable, discord.abc.GuildChannel, Hashable): if member is not None: ret.append(member) return ret + + def permissions_for(self, member): + base = super().permissions_for(member) + + # voice channels cannot be edited by people who can't connect to them + # It also implicitly denies all other voice perms + if not base.connect: + denied = Permissions.voice() + denied.update(manage_channels=True, manage_roles=True) + base.value &= ~denied.value + return base + + permissions_for.__doc__ = discord.abc.GuildChannel.permissions_for.__doc__ async def edit(self, *, reason=None, **options): """|coro|