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: () => {