Process everyone permission overwrites before role

This commit is contained in:
RogueException
2017-03-18 11:33:38 -03:00
parent 5a6d6ee076
commit bc469cbb46

View File

@@ -115,16 +115,21 @@ namespace Discord
resolvedPermissions = mask; //Owners and administrators always have all permissions
else
{
OverwritePermissions? perms;
//Start with this user's guild permissions
resolvedPermissions = guildPermissions;
//Give/Take Everyone permissions
perms = channel.GetPermissionOverwrite(guild.EveryoneRole);
if (perms != null)
resolvedPermissions = (resolvedPermissions & ~perms.Value.DenyValue) | perms.Value.AllowValue;
//Give/Take Role permissions
OverwritePermissions? perms;
var roleIds = user.RoleIds;
if (roleIds.Count > 0)
ulong deniedPermissions = 0UL, allowedPermissions = 0UL;
foreach (var roleId in user.RoleIds)
{
ulong deniedPermissions = 0UL, allowedPermissions = 0UL;
foreach (var roleId in roleIds)
if (roleId != guild.EveryoneRole.Id)
{
perms = channel.GetPermissionOverwrite(guild.GetRole(roleId));
if (perms != null)
@@ -133,8 +138,8 @@ namespace Discord
deniedPermissions |= perms.Value.DenyValue;
}
}
resolvedPermissions = (resolvedPermissions & ~deniedPermissions) | allowedPermissions;
}
resolvedPermissions = (resolvedPermissions & ~deniedPermissions) | allowedPermissions;
//Give/Take User permissions
perms = channel.GetPermissionOverwrite(user);