V18 / 8d896b8a86e5
AddonCommands.cs
Lilith/Core/Addons/AddonCommands.cs
Changed in this versionCS
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);
});
}
}