From 871dbea46075697847b03aabbad0a278a10682c1 Mon Sep 17 00:00:00 2001 From: unfunny Date: Sun, 13 Sep 2026 16:54:11 -0400 Subject: [PATCH] Detect E2EE rooms and log a clear warning; remove catch-all event logging --- index.js | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/index.js b/index.js index 01f8a4a..72cea6e 100644 --- a/index.js +++ b/index.js @@ -68,11 +68,6 @@ function loadQuotes() { const cmd = (process.env.BOT_COMMAND || '!quote').toLowerCase(); - // Diagnostic: log EVERY event the client receives, regardless of type. - client.on('event', (event) => { - console.log(`EVENT type="${event.getType()}" room=${event.getRoomId()} sender=${event.getSender()}`); - }); - // Auto-accept invites so the bot can be invited into rooms. client.on('RoomMember.membership', (event, member) => { if (member.userId === userId && member.membership === 'invite') { @@ -85,10 +80,18 @@ function loadQuotes() { }); // Respond to messages in any room this bot is a member of. - // We use the low-level 'event' client event, which sync.js emits - // directly for every event in every room (not a re-emit). client.on('event', (event) => { - if (event.getType() !== 'm.room.message') return; + const type = event.getType(); + + // Encrypted rooms: the bot has no E2EE support, so command text + // never arrives as plaintext and cannot be read or answered. + if (type === 'm.room.encrypted') { + console.log(`🔒 [${event.getRoomId()}] encrypted message received. ` + + `The bot cannot read E2EE rooms; invite it to an unencrypted room instead.`); + return; + } + + if (type !== 'm.room.message') return; const sender = event.getSender(); if (sender === userId) return; @@ -102,8 +105,6 @@ function loadQuotes() { const content = event.getContent(); if (!content || typeof content.body !== 'string') return; - console.log(`✉️ [${room.roomId}] membership="${membership}" sender="${sender}" body="${content.body}"`); - const lower = content.body.toLowerCase().trim(); if (lower === cmd || lower.startsWith(cmd + ' ')) { const quote = quotes[Math.floor(Math.random() * quotes.length)];