Browse Source

GuildPermissions should take into account ownership and administrator

pull/213/head
RogueException 8 years ago
parent
commit
24ed9c6c09
1 changed files with 13 additions and 6 deletions
  1. +13
    -6
      src/Discord.Net/Entities/Permissions/Permissions.cs

+ 13
- 6
src/Discord.Net/Entities/Permissions/Permissions.cs View File

@@ -88,11 +88,18 @@ namespace Discord

public static ulong ResolveGuild(IGuildUser user)
{
var roles = user.Roles;
ulong newPermissions = 0;
foreach (var role in roles)
newPermissions |= role.Permissions.RawValue;
return newPermissions;
ulong resolvedPermissions = 0;
if (user.Id == user.Guild.OwnerId)
resolvedPermissions = GuildPermissions.All.RawValue; //Owners always have all permissions
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)
@@ -104,7 +111,7 @@ namespace Discord
ulong resolvedPermissions = 0;

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
else
{


Loading…
Cancel
Save