Browse Source

Add owner/administrator check to RequirePermissionAttribute

A 'Fuzzy' property has been introduced for people who want
the old behavior of ignoring owner/administrator checks,
which can be used something like this:

[RequirePermission(permission, Fuzzy = false)]
pull/209/head
FiniteReality 8 years ago
parent
commit
17cd6291ec
1 changed files with 12 additions and 0 deletions
  1. +12
    -0
      src/Discord.Net.Commands/Attributes/Preconditions/RequirePermissionAttribute.cs

+ 12
- 0
src/Discord.Net.Commands/Attributes/Preconditions/RequirePermissionAttribute.cs View File

@@ -8,22 +8,34 @@ namespace Discord.Commands
{
public GuildPermission? GuildPermission { get; }
public ChannelPermission? ChannelPermission { get; }
public bool Fuzzy { get; set; } // public for `RequirePermission(permission, Fuzzy = false)`

public RequirePermissionAttribute(GuildPermission permission)
{
GuildPermission = permission;
ChannelPermission = null;
Fuzzy = true;
}
public RequirePermissionAttribute(ChannelPermission permission)
{
ChannelPermission = permission;
GuildPermission = null;
Fuzzy = true;
}
public override Task<PreconditionResult> CheckPermissions(IMessage context, Command executingCommand, object moduleInstance)
{
var guildUser = context.Author as IGuildUser;

if (Fuzzy)
{
if (guildUser.Id == guildUser.Guild.OwnerId)
return Task.FromResult(PreconditionResult.FromSuccess());

if (guildUser.GuildPermissions.Administrator)
return Task.FromResult(PreconditionResult.FromSuccess());
}

if (GuildPermission.HasValue)
{
if (guildUser == null)


Loading…
Cancel
Save