about summary refs log tree commit diff
path: root/MiniUtils/Commands/MakePolicyListCommand.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MiniUtils/Commands/MakePolicyListCommand.cs')
-rw-r--r--MiniUtils/Commands/MakePolicyListCommand.cs47
1 files changed, 47 insertions, 0 deletions
diff --git a/MiniUtils/Commands/MakePolicyListCommand.cs b/MiniUtils/Commands/MakePolicyListCommand.cs
new file mode 100644

index 0000000..0498712 --- /dev/null +++ b/MiniUtils/Commands/MakePolicyListCommand.cs
@@ -0,0 +1,47 @@ +using ArcaneLibs.Extensions; +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()); + } +} \ No newline at end of file