From 70dc9c6ef983c36ee37de1595f88f95c7c0f14da Mon Sep 17 00:00:00 2001 From: Krille Date: Mon, 24 Feb 2025 10:52:27 +0100 Subject: [PATCH] feat: Add command to upgrade room --- lib/src/room.dart | 2 ++ lib/src/utils/commands_extension.dart | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/lib/src/room.dart b/lib/src/room.dart index a466532c..d41c42e3 100644 --- a/lib/src/room.dart +++ b/lib/src/room.dart @@ -2046,6 +2046,8 @@ class Room { /// `m.sticker` use `canSendEvent('')`. bool get canSendDefaultMessages { if (encrypted && !client.encryptionEnabled) return false; + if (isExtinct) return false; + if (membership != Membership.join) return false; return canSendEvent(encrypted ? EventTypes.Encrypted : EventTypes.Message); } diff --git a/lib/src/utils/commands_extension.dart b/lib/src/utils/commands_extension.dart index ebfd6bb6..89724ef6 100644 --- a/lib/src/utils/commands_extension.dart +++ b/lib/src/utils/commands_extension.dart @@ -460,6 +460,16 @@ extension CommandsClientExtension on Client { stdout?.write(DefaultCommandOutput(users: [mxid]).toString()); return null; }); + addCommand('roomupgrade', (args, stdout) async { + final version = args.msg; + if (version.isEmpty) { + throw CommandException('Please provide a room version'); + } + final newRoomId = + await args.room!.client.upgradeRoom(args.room!.id, version); + stdout?.write(DefaultCommandOutput(rooms: [newRoomId]).toString()); + return null; + }); } }