← All source files

V18 / 8d896b8a86e5

AddonCommands.cs

Lilith/Core/Addons/AddonCommands.cs

Changed in this version
CS
using Lilith.Core.Commands;
namespace Lilith.Core.Addons;
public static class AddonCommands
{
    public static void Register(ChatCommandRegistry commands,Func<ProviderClient> provider)
    {
        commands.Register("addons","List active addon scenarios.",c=>{c.RequireNoArguments();return System.Text.Json.JsonSerializer.Serialize(provider().ActiveAddonScenarios);});
        commands.Register("addon-pending","List exact pending addon packages.",c=>{c.RequireNoArguments();return provider().PendingAddons();});
        commands.Register("addon-reject","Reject exact addon: /addon-reject ID SIGNATURE.",c=>{var parts=c.Arguments.Split(' ',StringSplitOptions.RemoveEmptyEntries);if(parts.Length!=2)throw new ArgumentException("Specify ID and signature.");return provider().RejectAddon(parts[0],parts[1]);});
        commands.Register("addon-review","Review exact addon source and approval signature: /addon-review ID.",c=>provider().ReviewAddon(c.Arguments));
        commands.RegisterAsync("addon-approve","Compile and activate exact reviewed package: /addon-approve ID SIGNATURE.",async c=>
        {
            var parts=c.Arguments.Split(' ',StringSplitOptions.RemoveEmptyEntries);if(parts.Length!=2)throw new ArgumentException("Specify addon ID and exact review signature.");
            var p=provider();string result=await p.ApproveAddonAsync(parts[0],parts[1],c.CancellationToken);p.RestartAddonRuntime();return new(true,result);
        });
    }
}