diff --git a/src/matrixroomhandler.ts b/src/matrixroomhandler.ts index 4fc96a4d476e63bc4cf6cae8e47c497a378fc88d..cd02b7049e7ceb027c5a588b5b0375152afecd26 100644 --- a/src/matrixroomhandler.ts +++ b/src/matrixroomhandler.ts @@ -114,17 +114,16 @@ export class MatrixRoomHandler { } else { return this.discord.ProcessMatrixStateEvent(event); } - } else if (event.type === "m.room.member") { - return this.discord.ProcessMatrixStateEvent(event); - } else if (event.type === "m.room.name") { - return this.discord.ProcessMatrixStateEvent(event); - } else if (event.type === "m.room.topic") { + } else if (["m.room.member", "m.room.name", "m.room.topic"].includes(event.type)) { return this.discord.ProcessMatrixStateEvent(event); } else if (event.type === "m.room.redaction" && context.rooms.remote) { return this.discord.ProcessMatrixRedact(event); } else if (event.type === "m.room.message" || event.type === "m.sticker") { log.verbose(`Got ${event.type} event`); - if (event.type === "m.room.message" && event.content.body && event.content.body.startsWith("!discord")) { + const isBotCommand = event.type === "m.room.message" && + event.content.body && + event.content.body.startsWith("!discord"); + if (isBotCommand) { return this.ProcessCommand(event, context); } else if (context.rooms.remote) { const srvChanPair = context.rooms.remote.roomId.substr("_discord".length).split("_", ROOM_NAME_PARTS); @@ -172,6 +171,15 @@ export class MatrixRoomHandler { } public async ProcessCommand(event: any, context: any) { + const intent = this.bridge.getIntent(); + // Due to #257 we need to check if we are joined. + try { + await intent.getClient().sendReadReceipt(event.event_id); + } catch (ex) { + log.warn("Couldn't send a read reciept into the room:", ex, ". Ignoring command."); + return; + } + if (!this.config.bridge.enableSelfServiceBridging) { // We can do this here because the only commands we support are self-service bridging return this.bridge.getIntent().sendMessage(event.room_id, { diff --git a/test/test_matrixroomhandler.ts b/test/test_matrixroomhandler.ts index aa2b5f641b5c483040e7600d8a9fdd9537dae00c..8d2e7f6281b898a65b886912e9bfb185ae03823b 100644 --- a/test/test_matrixroomhandler.ts +++ b/test/test_matrixroomhandler.ts @@ -147,6 +147,9 @@ function createRH(opts: any = {}) { setRoomDirectoryVisibilityAppService: () => { return Promise.resolve(); }, + sendReadReceipt: () => { + return Promise.resolve(); + }, }; const provisioner = { AskBridgePermission: () => {