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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 BR|Eh6 delta 89 zcmZp8z}?WmHbI)zj)8$eVxodQqus`YCHx$s{L>jgB9nOpv^Ey{F>Y>A6y|H5F28-c sJY#ME4-0D)1D`jSG)Ee1)W$+DR<<@yYu@hi>55g1vD^2SGCFes0Q}GwJ^%m!