about summary refs log tree commit diff
path: root/Utilities/LibMatrix.Utilities.Bot/Interfaces
diff options
context:
space:
mode:
Diffstat (limited to 'Utilities/LibMatrix.Utilities.Bot/Interfaces')
-rw-r--r--Utilities/LibMatrix.Utilities.Bot/Interfaces/CommandContext.cs14
-rw-r--r--Utilities/LibMatrix.Utilities.Bot/Interfaces/ICommand.cs10
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