diff --git a/MiniUtils/Commands/DeleteRoomCommand.cs b/MiniUtils/Commands/DeleteRoomCommand.cs
new file mode 100644
index 0000000..41dbfb3
--- /dev/null
+++ b/MiniUtils/Commands/DeleteRoomCommand.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 DeleteRoomCommand() : ICommand {
+ public string Name => "delete room";
+
+ public string[]? Aliases => ["deleteroom"];
+
+ public string Description => "Delete a room";
+
+ 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
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
|