Browse Source

Merge dfe043080e into 8ec80663f0

pull/209/merge
Finite Reality GitHub 8 years ago
parent
commit
835948efac
1 changed files with 15 additions and 0 deletions
  1. +15
    -0
      src/Discord.Net.Commands/Attributes/Preconditions/RequirePermissionAttribute.cs

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

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


public RequirePermissionAttribute(GuildPermission permission) public RequirePermissionAttribute(GuildPermission permission)
{ {
GuildPermission = permission; GuildPermission = permission;
ChannelPermission = null; ChannelPermission = null;
Fuzzy = true;
} }
public RequirePermissionAttribute(ChannelPermission permission) public RequirePermissionAttribute(ChannelPermission permission)
{ {
ChannelPermission = permission; ChannelPermission = permission;
GuildPermission = null; GuildPermission = null;
Fuzzy = true;
} }
public override Task<PreconditionResult> CheckPermissions(CommandContext context, CommandInfo command, IDependencyMap map) public override Task<PreconditionResult> CheckPermissions(CommandContext context, CommandInfo command, IDependencyMap map)
{ {
var guildUser = context.User as IGuildUser; var guildUser = context.User as IGuildUser;


if (guildUser != null)
{
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 (GuildPermission.HasValue)
{ {
if (guildUser == null) if (guildUser == null)


Loading…
Cancel
Save