about summary refs log tree commit diff
path: root/Utilities/LibMatrix.Utilities.Bot/Interfaces/ICommand.cs
blob: 941d69e98ce0acf49e74e44494bfce42f7829c8e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System.Collections.Frozen;
using System.Collections.Immutable;
using Microsoft.Extensions.DependencyInjection;

namespace LibMatrix.Utilities.Bot.Interfaces;

public interface ICommand {
    public string Name { get; }
    public string[]? Aliases { get; }
    public string Description { get; }
    public bool Unlisted { get; }

    public Task<bool> CanInvoke(CommandContext ctx) => Task.FromResult(true);

    public Task Invoke(CommandContext ctx);
}

public interface ICommand<T> : ICommand where T : ICommandGroup { }

public interface ICommandGroup : ICommand { }

public interface ICommandGroup<T> : ICommandGroup where T : ICommandGroup { }