V10 / 66cebf3528e0
CalendarCommands.cs
Lilith/Core/Calendar/CalendarCommands.cs
Changed in this versionCS
using System.Text.Json;
using Lilith.Core.Commands;
namespace Lilith.Core.Calendar;
public static class CalendarCommands
{
public static void Register(ChatCommandRegistry commands, Func<ProviderClient> provider)
{
commands.Register("calendar", "Show today's agenda; pending; review <proposal-id>.", c =>
{
var calendar = provider().Calendar ?? throw new InvalidOperationException("Calendar unavailable.");
return c.Arguments switch
{
"" => calendar.Execute(new("agenda")).ToReply(),
"pending" => calendar.Execute(new("pending")).ToReply(),
var value when value.StartsWith("review ", StringComparison.Ordinal) => JsonSerializer.Serialize(calendar.Review(value[7..].Trim())),
_ => throw new ArgumentException("Use /calendar, /calendar pending or /calendar review <id>.")
};
});
commands.Register("calendar-approve", "Approve one exact prepared calendar change.", c => provider().ApproveCalendar(c.Arguments));
commands.Register("calendar-reject", "Reject one prepared calendar change.", c => { provider().RejectCalendar(c.Arguments); return "Calendar proposal rejected."; });
}
}