From 17cd6291ec905dd58b130b8e6540ff8ce9f2c7fb Mon Sep 17 00:00:00 2001 From: FiniteReality Date: Thu, 18 Aug 2016 23:06:06 +0100 Subject: [PATCH] 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)] --- .../Preconditions/RequirePermissionAttribute.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Discord.Net.Commands/Attributes/Preconditions/RequirePermissionAttribute.cs b/src/Discord.Net.Commands/Attributes/Preconditions/RequirePermissionAttribute.cs index db2668df4..393f2ed42 100644 --- a/src/Discord.Net.Commands/Attributes/Preconditions/RequirePermissionAttribute.cs +++ b/src/Discord.Net.Commands/Attributes/Preconditions/RequirePermissionAttribute.cs @@ -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 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)