You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
1004 B
29 lines
1004 B
using System.Threading.Tasks;
|
|
using CliFx;
|
|
using CliFx.Attributes;
|
|
using CliFx.Infrastructure;
|
|
using DiscordChatExporter.Core.Discord;
|
|
|
|
namespace DiscordChatExporter.Cli.Commands.Base
|
|
{
|
|
public abstract class TokenCommandBase : ICommand
|
|
{
|
|
[CommandOption("token", 't', IsRequired = true, EnvironmentVariable = "DISCORD_TOKEN", Description = "Authentication token.")]
|
|
public string TokenValue { get; init; } = "";
|
|
|
|
[CommandOption("bot", 'b', EnvironmentVariable = "DISCORD_TOKEN_BOT", Description = "Authenticate as a bot.")]
|
|
public bool IsBotToken { get; init; }
|
|
|
|
private AuthToken GetAuthToken() => new(
|
|
IsBotToken
|
|
? AuthTokenType.Bot
|
|
: AuthTokenType.User,
|
|
TokenValue
|
|
);
|
|
|
|
private DiscordClient? _discordClient;
|
|
protected DiscordClient Discord => _discordClient ??= new DiscordClient(GetAuthToken());
|
|
|
|
public abstract ValueTask ExecuteAsync(IConsole console);
|
|
}
|
|
} |