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)