From 5a991897dcdfe5917c7b7bbb693b28f57dbdeb05 Mon Sep 17 00:00:00 2001 From: gnuxie Date: Sun, 18 Feb 2024 20:04:51 +0000 Subject: [PATCH] Fix Draupnir's joinOnInviteListener. --- src/Draupnir.ts | 8 ++++++++ src/DraupnirBotMode.ts | 3 +++ 2 files changed, 11 insertions(+) diff --git a/src/Draupnir.ts b/src/Draupnir.ts index 22cdb59e..94e23997 100644 --- a/src/Draupnir.ts +++ b/src/Draupnir.ts @@ -163,6 +163,14 @@ export class Draupnir implements Client { if (isError(loadResult)) { throw loadResult.error; } + // we need to make sure that we are protecting the management room so we + // have immediate access to its membership (for accepting invitations). + const managementRoomProtectResult = await draupnir.protectedRoomsSet.protectedRoomsConfig.addRoom( + managementRoom + ); + if (isError(managementRoomProtectResult)) { + throw managementRoomProtectResult.error; + } return draupnir; } diff --git a/src/DraupnirBotMode.ts b/src/DraupnirBotMode.ts index 67a4cb23..622f4b33 100644 --- a/src/DraupnirBotMode.ts +++ b/src/DraupnirBotMode.ts @@ -109,6 +109,9 @@ export async function makeDraupnirBotModeFromConfig( const error = draupnir.error; throw new Error(`Unable to create Draupnir: ${error.message}`); } + matrixEmitter.on('room.invite', (roomID, event) => { + clientsInRoomMap.handleTimelineEvent(roomID, event); + }) matrixEmitter.on('room.event', (roomID, event) => { roomStateManagerFactory.handleTimelineEvent(roomID, event); clientsInRoomMap.handleTimelineEvent(roomID, event);