From e00eb15f35b36e796f3fa02d3f8ac889cad61094 Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Thu, 17 Aug 2023 18:17:53 +1200 Subject: [PATCH] support up to 1 space in written mentions --- d2m/converters/message-to-event.js | 4 ++-- d2m/converters/message-to-event.test.js | 5 ++++- scripts/events.db | Bin 98304 -> 192512 bytes 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/d2m/converters/message-to-event.js b/d2m/converters/message-to-event.js index c128595..29730d4 100644 --- a/d2m/converters/message-to-event.js +++ b/d2m/converters/message-to-event.js @@ -131,8 +131,8 @@ async function messageToEvent(message, guild, options = {}, di) { escapeHTML: false, }, null, null) - // Mentions scenario 3: scan the message content for written @mentions of matrix users - const matches = [...content.matchAll(/@([a-z0-9._]+)\b/gi)] + // Mentions scenario 3: scan the message content for written @mentions of matrix users. Allows for up to one space between @ and mention. + const matches = [...content.matchAll(/@ ?([a-z0-9._]+)\b/gi)] if (matches.length && matches.some(m => m[1].match(/[a-z]/i))) { const writtenMentionsText = matches.map(m => m[1].toLowerCase()) const roomID = db.prepare("SELECT room_id FROM channel_room WHERE channel_id = ?").pluck().get(message.channel_id) diff --git a/d2m/converters/message-to-event.test.js b/d2m/converters/message-to-event.test.js index 4200afe..df94196 100644 --- a/d2m/converters/message-to-event.test.js +++ b/d2m/converters/message-to-event.test.js @@ -247,10 +247,12 @@ test("message2event: simple reply to matrix user, reply fallbacks disabled", asy }]) }) -test("message2event: simple written @mention for matrix user", async t => { +test("message2event: simple written @mentions for matrix users", async t => { + let called = 0 const events = await messageToEvent(data.message.simple_written_at_mention_for_matrix, data.guild.general, {}, { api: { async getJoinedMembers(roomID) { + called++ t.equal(roomID, "!kLRqKKUQXcibIMtOpl:cadence.moe") return new Promise(resolve => { setTimeout(() => { @@ -290,6 +292,7 @@ test("message2event: simple written @mention for matrix user", async t => { msgtype: "m.text", body: "@Cadence, tell me about @Phil, the creator of the Chin Trick, who has become ever more powerful under the mentorship of @botrac4r and @huck" }]) + t.equal(called, 1, "should only look up the member list once") }) test("message2event: very large attachment is linked instead of being uploaded", async t => { diff --git a/scripts/events.db b/scripts/events.db index 3356cbe2ba67631f1efdf34292de8256ab6ee024..d3b817d2a036453e0de94479f85f48b5b73d0bb7 100644 GIT binary patch delta 20626 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 t1oT8QM**96-kV>_9Q55EDo-V(A tx;$fU01pdm6a$|(mo!HjYt+U