Process everyone permission overwrites before role
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user