From e16a4b44d518da86b7b253642156eb2545c81ba7 Mon Sep 17 00:00:00 2001 From: unfunny Date: Sun, 13 Sep 2026 17:14:58 -0400 Subject: [PATCH] Add step-by-step diagnostics to message handler and echo command at startup --- index.js | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/index.js b/index.js index 72cea6e..ffaed16 100644 --- a/index.js +++ b/index.js @@ -67,6 +67,7 @@ function loadQuotes() { console.log(''); const cmd = (process.env.BOT_COMMAND || '!quote').toLowerCase(); + console.log(`🔊 Listening for command: "${cmd}"`); // Auto-accept invites so the bot can be invited into rooms. client.on('RoomMember.membership', (event, member) => { @@ -82,11 +83,12 @@ function loadQuotes() { // Respond to messages in any room this bot is a member of. client.on('event', (event) => { const type = event.getType(); + const eventRoomId = event.getRoomId(); // 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. ` + + console.log(`🔒 [${eventRoomId}] encrypted message received. ` + `The bot cannot read E2EE rooms; invite it to an unencrypted room instead.`); return; } @@ -94,24 +96,35 @@ function loadQuotes() { if (type !== 'm.room.message') return; const sender = event.getSender(); - if (sender === userId) return; + if (sender === userId) return; // skip replies from ourselves - const room = client.getRoom(event.getRoomId()); - if (!room) return; + const room = eventRoomId ? client.getRoom(eventRoomId) : null; + if (!room) { + console.log(`â„šī¸ [debug] got m.room.message for unknown room: ${eventRoomId}`); + return; + } const membership = room.getMyMembership(); - if (membership !== 'join') return; + if (membership !== 'join') { + console.log(`â„šī¸ [debug] [${room.roomId}] m.room.message while membership="${membership}" — not replying`); + return; + } const content = event.getContent(); - if (!content || typeof content.body !== 'string') return; + if (!content || typeof content.body !== 'string') { + console.log(`â„šī¸ [debug] [${room.roomId}] m.room.message without text body`); + return; + } const lower = content.body.toLowerCase().trim(); - if (lower === cmd || lower.startsWith(cmd + ' ')) { - const quote = quotes[Math.floor(Math.random() * quotes.length)]; - client.sendTextMessage(room.roomId, quote) - .then(() => console.log(`🎃 [${room.roomId}] ${quote}`)) - .catch((err) => console.error('Failed to send quote:', err.message)); - } + const matches = lower === cmd || lower.startsWith(cmd + ' '); + console.log(`đŸ’Ŧ [${room.roomId}] <${sender}> "${content.body}" (listening for "${cmd}", match=${matches})`); + if (!matches) return; + + const quote = quotes[Math.floor(Math.random() * quotes.length)]; + client.sendTextMessage(room.roomId, quote) + .then(() => console.log(`🎃 [${room.roomId}] ${quote}`)) + .catch((err) => console.error('Failed to send quote:', err.message)); }); console.log('🤖 Bot is running!');