diff options
Diffstat (limited to 'Utilities/LibMatrix.Utilities.Bot/Interfaces')
-rw-r--r-- | Utilities/LibMatrix.Utilities.Bot/Interfaces/CommandContext.cs | 14 | ||||
-rw-r--r-- | Utilities/LibMatrix.Utilities.Bot/Interfaces/ICommand.cs | 10 |
2 files changed, 24 insertions, 0 deletions
diff --git a/Utilities/LibMatrix.Utilities.Bot/Interfaces/CommandContext.cs b/Utilities/LibMatrix.Utilities.Bot/Interfaces/CommandContext.cs index e65f86d..062e99f 100644 --- a/Utilities/LibMatrix.Utilities.Bot/Interfaces/CommandContext.cs +++ b/Utilities/LibMatrix.Utilities.Bot/Interfaces/CommandContext.cs @@ -19,4 +19,18 @@ public class CommandContext { public required AuthenticatedHomeserverGeneric Homeserver { get; set; } public async Task<EventIdResponse> Reply(RoomMessageEventContent content) => await Room.SendMessageEventAsync(content); +} + +public class CommandResult { + public required bool Success { get; set; } + public Exception? Exception { get; set; } + public required CommandResultType Result { get; set; } + public required CommandContext Context { get; set; } + + public enum CommandResultType { + Success, + Failure_Exception, + Failure_NoPermission, + Failure_InvalidCommand + } } \ No newline at end of file diff --git a/Utilities/LibMatrix.Utilities.Bot/Interfaces/ICommand.cs b/Utilities/LibMatrix.Utilities.Bot/Interfaces/ICommand.cs index 453a8fe..4626a23 100644 --- a/Utilities/LibMatrix.Utilities.Bot/Interfaces/ICommand.cs +++ b/Utilities/LibMatrix.Utilities.Bot/Interfaces/ICommand.cs @@ -1,10 +1,20 @@ +using System.Collections.Frozen; +using System.Collections.Immutable; + 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 ICommandGroup : ICommand { + public IImmutableList<ICommand> SubCommands { get; } } \ No newline at end of file |