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