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