diff --git a/src/Discord.Net.Core/Utils/Permissions.cs b/src/Discord.Net.Core/Utils/Permissions.cs index 390c142de..a6c545da0 100644 --- a/src/Discord.Net.Core/Utils/Permissions.cs +++ b/src/Discord.Net.Core/Utils/Permissions.cs @@ -118,6 +118,7 @@ namespace Discord //Start with this user's guild permissions resolvedPermissions = guildPermissions; + //Give/Take Role permissions OverwritePermissions? perms; var roleIds = user.RoleIds; if (roleIds.Count > 0) @@ -128,15 +129,17 @@ namespace Discord perms = channel.GetPermissionOverwrite(guild.GetRole(roleId)); if (perms != null) { - deniedPermissions |= perms.Value.DenyValue; allowedPermissions |= perms.Value.AllowValue; + deniedPermissions |= perms.Value.DenyValue; } } - resolvedPermissions = (resolvedPermissions & ~deniedPermissions) | allowedPermissions; + resolvedPermissions = (resolvedPermissions | allowedPermissions) & ~deniedPermissions; } + + //Give/Take User permissions perms = channel.GetPermissionOverwrite(user); if (perms != null) - resolvedPermissions = (resolvedPermissions & ~perms.Value.DenyValue) | perms.Value.AllowValue; + resolvedPermissions = (resolvedPermissions | perms.Value.AllowValue) & ~perms.Value.DenyValue; //TODO: C#7 Typeswitch candidate var textChannel = channel as ITextChannel;