Change wording of permission preconditions

Also fix an issue where RequireBotPermission may throw if used in a
non-guild channel which required guild permissions.
This commit is contained in:
FiniteReality
2017-06-17 15:10:35 +01:00
parent 1942637380
commit 0550006d56
2 changed files with 7 additions and 5 deletions

View File

@@ -44,14 +44,16 @@ namespace Discord.Commands
public override async Task<PreconditionResult> CheckPermissions(ICommandContext context, CommandInfo command, IServiceProvider services)
{
var guildUser = await context.Guild.GetCurrentUserAsync();
IGuildUser guildUser = null;
if (context.Guild != null)
guildUser = await context.Guild.GetCurrentUserAsync().ConfigureAwait(false);
if (GuildPermission.HasValue)
{
if (guildUser == null)
return PreconditionResult.FromError("Command must be used in a guild channel");
if (!guildUser.GuildPermissions.Has(GuildPermission.Value))
return PreconditionResult.FromError($"Command requires guild permission {GuildPermission.Value}");
return PreconditionResult.FromError($"Bot requires guild permission {GuildPermission.Value}");
}
if (ChannelPermission.HasValue)
@@ -65,7 +67,7 @@ namespace Discord.Commands
perms = ChannelPermissions.All(guildChannel);
if (!perms.Has(ChannelPermission.Value))
return PreconditionResult.FromError($"Command requires channel permission {ChannelPermission.Value}");
return PreconditionResult.FromError($"Bot requires channel permission {ChannelPermission.Value}");
}
return PreconditionResult.FromSuccess();

View File

@@ -52,7 +52,7 @@ namespace Discord.Commands
if (guildUser == null)
return Task.FromResult(PreconditionResult.FromError("Command must be used in a guild channel"));
if (!guildUser.GuildPermissions.Has(GuildPermission.Value))
return Task.FromResult(PreconditionResult.FromError($"Command requires guild permission {GuildPermission.Value}"));
return Task.FromResult(PreconditionResult.FromError($"User requires guild permission {GuildPermission.Value}"));
}
if (ChannelPermission.HasValue)
@@ -66,7 +66,7 @@ namespace Discord.Commands
perms = ChannelPermissions.All(guildChannel);
if (!perms.Has(ChannelPermission.Value))
return Task.FromResult(PreconditionResult.FromError($"Command requires channel permission {ChannelPermission.Value}"));
return Task.FromResult(PreconditionResult.FromError($"User requires channel permission {ChannelPermission.Value}"));
}
return Task.FromResult(PreconditionResult.FromSuccess());