Fix error with RequirePermission precondition

This commit is contained in:
Finite Reality
2016-08-07 17:23:26 +01:00
parent c77c84bec7
commit f2d80de343

View File

@@ -6,7 +6,7 @@ using System.Threading.Tasks;
namespace Discord.Commands.Attributes.Preconditions namespace Discord.Commands.Attributes.Preconditions
{ {
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
public class RequirePermission : RequireGuildAttribute public class RequirePermission : PreconditionAttribute
{ {
public GuildPermission? GuildPermission { get; set; } public GuildPermission? GuildPermission { get; set; }
public ChannelPermission? ChannelPermission { get; set; } public ChannelPermission? ChannelPermission { get; set; }
@@ -23,12 +23,10 @@ namespace Discord.Commands.Attributes.Preconditions
GuildPermission = null; GuildPermission = null;
} }
public override async Task<PreconditionResult> CheckPermissions(IMessage context, Command executingCommand, object moduleInstance) public override Task<PreconditionResult> CheckPermissions(IMessage context, Command executingCommand, object moduleInstance)
{ {
var result = await base.CheckPermissions(context, executingCommand, moduleInstance).ConfigureAwait(false); if (!(context.Channel is IGuildChannel))
return Task.FromResult(PreconditionResult.FromError("Command must be used in a guild channel"));
if (!result.IsSuccess)
return result;
var author = context.Author as IGuildUser; var author = context.Author as IGuildUser;
@@ -36,7 +34,7 @@ namespace Discord.Commands.Attributes.Preconditions
{ {
var guildPerms = author.GuildPermissions.ToList(); var guildPerms = author.GuildPermissions.ToList();
if (!guildPerms.Contains(GuildPermission.Value)) if (!guildPerms.Contains(GuildPermission.Value))
return PreconditionResult.FromError($"User is missing guild permission {GuildPermission.Value}"); return Task.FromResult(PreconditionResult.FromError($"User is missing guild permission {GuildPermission.Value}"));
} }
if (ChannelPermission.HasValue) if (ChannelPermission.HasValue)
@@ -45,10 +43,10 @@ namespace Discord.Commands.Attributes.Preconditions
var channelPerms = author.GetPermissions(channel).ToList(); var channelPerms = author.GetPermissions(channel).ToList();
if (!channelPerms.Contains(ChannelPermission.Value)) if (!channelPerms.Contains(ChannelPermission.Value))
return PreconditionResult.FromError($"User is missing channel permission {ChannelPermission.Value}"); return Task.FromResult(PreconditionResult.FromError($"User is missing channel permission {ChannelPermission.Value}"));
} }
return PreconditionResult.FromSuccess(); return Task.FromResult(PreconditionResult.FromSuccess());
} }
} }
} }