using LibMatrix.EventTypes.Common; using LibMatrix.EventTypes.Spec.State.RoomInfo; using LibMatrix.Helpers; using LibMatrix.Responses; using LibMatrix.RoomTypes; using LibMatrix.Utilities.Bot.Interfaces; namespace MiniUtils.Commands; public class MakePolicyListCommand() : ICommand { public string Name => "makepolicylist"; public string[]? Aliases => ["make policy list"]; public string Description => "Make a new policy list"; public bool Unlisted => false; public async Task Invoke(CommandContext ctx) { var creationContent = new CreateRoomRequest() { Name = ctx.Args[0], RoomAliasName = ctx.Args[0], Visibility = "private", CreationContent = new() { { "type", PolicyRoom.TypeName }, { "room_version", 11 } }, PowerLevelContentOverride = new RoomPowerLevelEventContent() { EventsDefault = 50, Invite = 50 }, InitialState = [ new() { Type = MjolnirShortcodeEventContent.EventId, StateKey = "", TypedContent = new MjolnirShortcodeEventContent() { Shortcode = ctx.Args[0] } } ] }; var result = await ctx.Homeserver.CreateRoom(creationContent); await ctx.Room.SendMessageEventAsync(new MessageBuilder().WithMention($"#{ctx.Args[0]}:{ctx.Homeserver.ServerName}").Build()); } }