GuildPermissions should take into account ownership and administrator

This commit is contained in:
RogueException
2016-08-18 19:42:14 -03:00
parent a15b5667c8
commit 24ed9c6c09

View File

@@ -88,11 +88,18 @@ namespace Discord
public static ulong ResolveGuild(IGuildUser user) public static ulong ResolveGuild(IGuildUser user)
{ {
var roles = user.Roles; ulong resolvedPermissions = 0;
ulong newPermissions = 0;
foreach (var role in roles) if (user.Id == user.Guild.OwnerId)
newPermissions |= role.Permissions.RawValue; resolvedPermissions = GuildPermissions.All.RawValue; //Owners always have all permissions
return newPermissions; else
{
foreach (var role in user.Roles)
resolvedPermissions |= role.Permissions.RawValue;
if (GetValue(resolvedPermissions, GuildPermission.Administrator))
resolvedPermissions = GuildPermissions.All.RawValue; //Administrators always have all permissions
}
return resolvedPermissions;
} }
/*public static ulong ResolveChannel(IGuildUser user, IGuildChannel channel) /*public static ulong ResolveChannel(IGuildUser user, IGuildChannel channel)
@@ -104,7 +111,7 @@ namespace Discord
ulong resolvedPermissions = 0; ulong resolvedPermissions = 0;
ulong mask = ChannelPermissions.All(channel).RawValue; ulong mask = ChannelPermissions.All(channel).RawValue;
if (user.Id == user.Guild.OwnerId || GetValue(guildPermissions, GuildPermission.Administrator)) if (/*user.Id == user.Guild.OwnerId || */GetValue(guildPermissions, GuildPermission.Administrator))
resolvedPermissions = mask; //Owners and administrators always have all permissions resolvedPermissions = mask; //Owners and administrators always have all permissions
else else
{ {