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:
@@ -44,14 +44,16 @@ namespace Discord.Commands
|
|||||||
|
|
||||||
public override async Task<PreconditionResult> CheckPermissions(ICommandContext context, CommandInfo command, IServiceProvider services)
|
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 (GuildPermission.HasValue)
|
||||||
{
|
{
|
||||||
if (guildUser == null)
|
if (guildUser == null)
|
||||||
return PreconditionResult.FromError("Command must be used in a guild channel");
|
return PreconditionResult.FromError("Command must be used in a guild channel");
|
||||||
if (!guildUser.GuildPermissions.Has(GuildPermission.Value))
|
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)
|
if (ChannelPermission.HasValue)
|
||||||
@@ -65,7 +67,7 @@ namespace Discord.Commands
|
|||||||
perms = ChannelPermissions.All(guildChannel);
|
perms = ChannelPermissions.All(guildChannel);
|
||||||
|
|
||||||
if (!perms.Has(ChannelPermission.Value))
|
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();
|
return PreconditionResult.FromSuccess();
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ namespace Discord.Commands
|
|||||||
if (guildUser == null)
|
if (guildUser == null)
|
||||||
return Task.FromResult(PreconditionResult.FromError("Command must be used in a guild channel"));
|
return Task.FromResult(PreconditionResult.FromError("Command must be used in a guild channel"));
|
||||||
if (!guildUser.GuildPermissions.Has(GuildPermission.Value))
|
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)
|
if (ChannelPermission.HasValue)
|
||||||
@@ -66,7 +66,7 @@ namespace Discord.Commands
|
|||||||
perms = ChannelPermissions.All(guildChannel);
|
perms = ChannelPermissions.All(guildChannel);
|
||||||
|
|
||||||
if (!perms.Has(ChannelPermission.Value))
|
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());
|
return Task.FromResult(PreconditionResult.FromSuccess());
|
||||||
|
|||||||
Reference in New Issue
Block a user