Added RequireOwner support for User tokens
This commit is contained in:
@@ -12,9 +12,20 @@ namespace Discord.Commands
|
|||||||
{
|
{
|
||||||
public override async Task<PreconditionResult> CheckPermissions(ICommandContext context, CommandInfo command, IDependencyMap map)
|
public override async Task<PreconditionResult> CheckPermissions(ICommandContext context, CommandInfo command, IDependencyMap map)
|
||||||
{
|
{
|
||||||
var application = await context.Client.GetApplicationInfoAsync();
|
switch (context.Client.TokenType)
|
||||||
if (context.User.Id == application.Owner.Id) return PreconditionResult.FromSuccess();
|
{
|
||||||
return PreconditionResult.FromError("Command can only be run by the owner of the bot");
|
case TokenType.Bot:
|
||||||
|
var application = await context.Client.GetApplicationInfoAsync();
|
||||||
|
if (context.User.Id != application.Owner.Id)
|
||||||
|
return PreconditionResult.FromError("Command can only be run by the owner of the bot");
|
||||||
|
return PreconditionResult.FromSuccess();
|
||||||
|
case TokenType.User:
|
||||||
|
if (context.User.Id != context.Client.CurrentUser.Id)
|
||||||
|
return PreconditionResult.FromError("Command can only be run by the owner of the bot");
|
||||||
|
return PreconditionResult.FromSuccess();
|
||||||
|
default:
|
||||||
|
return PreconditionResult.FromError($"{nameof(RequireOwnerAttribute)} is not supported by this {nameof(TokenType)}.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ namespace Discord
|
|||||||
{
|
{
|
||||||
ConnectionState ConnectionState { get; }
|
ConnectionState ConnectionState { get; }
|
||||||
ISelfUser CurrentUser { get; }
|
ISelfUser CurrentUser { get; }
|
||||||
|
TokenType TokenType { get; }
|
||||||
|
|
||||||
Task StartAsync();
|
Task StartAsync();
|
||||||
Task StopAsync();
|
Task StopAsync();
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ namespace Discord.Rest
|
|||||||
internal LogManager LogManager { get; }
|
internal LogManager LogManager { get; }
|
||||||
public LoginState LoginState { get; private set; }
|
public LoginState LoginState { get; private set; }
|
||||||
public ISelfUser CurrentUser { get; protected set; }
|
public ISelfUser CurrentUser { get; protected set; }
|
||||||
|
public TokenType TokenType => ApiClient.AuthTokenType;
|
||||||
|
|
||||||
/// <summary> Creates a new REST-only discord client. </summary>
|
/// <summary> Creates a new REST-only discord client. </summary>
|
||||||
internal BaseDiscordClient(DiscordRestConfig config, API.DiscordRestApiClient client)
|
internal BaseDiscordClient(DiscordRestConfig config, API.DiscordRestApiClient client)
|
||||||
|
|||||||
Reference in New Issue
Block a user