using FreeCode.Core.Enums; using FreeCode.Core.Interfaces; using FreeCode.Core.Models; namespace FreeCode.Commands; public abstract class CommandBase : ICommand { public abstract string Name { get; } public virtual string[]? Aliases => null; public abstract string Description { get; } public abstract CommandCategory Category { get; } public virtual CommandAvailability Availability => CommandAvailability.Always; public virtual bool IsEnabled() => true; public abstract Task ExecuteAsync(CommandContext context, string? args = null, CancellationToken ct = default); }