diff --git a/m2d/converters/event-to-message.js b/m2d/converters/event-to-message.js
index cf51d863..ec84e07b 100644
--- a/m2d/converters/event-to-message.js
+++ b/m2d/converters/event-to-message.js
@@ -390,10 +390,19 @@ async function eventToMessage(event, guild, di) {
// Handling mentions of Discord users
input = input.replace(/("https:\/\/matrix.to\/#\/(@[^"]+)")>/g, (whole, attributeValue, mxid) => {
- if (!utils.eventSenderIsFromDiscord(mxid)) return whole
- const userID = select("sim", "user_id", {mxid: mxid}).pluck().get()
- if (!userID) return whole
- return `${attributeValue} data-user-id="${userID}">`
+ if (utils.eventSenderIsFromDiscord(mxid)) {
+ // Handle mention of an OOYE sim user by their mxid
+ const userID = select("sim", "user_id", {mxid: mxid}).pluck().get()
+ if (!userID) return whole
+ return `${attributeValue} data-user-id="${userID}">`
+ } else {
+ // Handle mention of a Matrix user by their mxid
+ // Check if this Matrix user is actually the sim user from another old bridge in the room?
+ const match = mxid.match(/[^:]*discord[^:]*_([0-9]{6,}):/) // try to match @_discord_123456, @_discordpuppet_123456, etc.
+ if (match) return `${attributeValue} data-user-id="${match[1]}">`
+ // Nope, just a real Matrix user.
+ return whole
+ }
})
// Handling mentions of Discord rooms
diff --git a/m2d/converters/event-to-message.test.js b/m2d/converters/event-to-message.test.js
index 40eb83ec..6dbe112e 100644
--- a/m2d/converters/event-to-message.test.js
+++ b/m2d/converters/event-to-message.test.js
@@ -2211,6 +2211,33 @@ test("event2message: guessed @mentions may join members to mention", async t =>
t.equal(called, 1, "searchGuildMembers should be called once")
})
+test("event2message: guessed @mentions work with other matrix bridge old users", async t => {
+ t.deepEqual(
+ await eventToMessage({
+ type: "m.room.message",
+ sender: "@cadence:cadence.moe",
+ content: {
+ msgtype: "m.text",
+ body: "extremity#0: zenosia#0717: back me up on this sentiment, if not necessarily the phrasing",
+ format: "org.matrix.custom.html",
+ formatted_body: "extremity#0: zenosia#0717: back me up on this sentiment, if not necessarily the phrasing"
+ },
+ room_id: "!kLRqKKUQXcibIMtOpl:cadence.moe",
+ event_id: "$SiXetU9h9Dg-M9Frcw_C6ahnoXZ3QPZe3MVJR5tcB9A"
+ }),
+ {
+ messagesToDelete: [],
+ messagesToEdit: [],
+ messagesToSend: [{
+ username: "cadence [they]",
+ content: "<@114147806469554185> <@176943908762006200> back me up on this sentiment, if not necessarily the phrasing",
+ avatar_url: undefined
+ }],
+ ensureJoined: [] // we already think it worked on Matrix side due to the pill, so no need for the OOYE sim user to join the room to indicate success.
+ }
+ )
+})
+
slow()("event2message: unknown emoji in the end is reuploaded as a sprite sheet", async t => {
const messages = await eventToMessage({
type: "m.room.message",