diff --git a/d2m/converters/edit-to-changes.test.js b/d2m/converters/edit-to-changes.test.js
index 9a7460b..449af98 100644
--- a/d2m/converters/edit-to-changes.test.js
+++ b/d2m/converters/edit-to-changes.test.js
@@ -32,7 +32,7 @@ test("edit2changes: edit by webhook", async t => {
test("edit2changes: bot response", async t => {
const {senderMxid, eventsToRedact, eventsToReplace, eventsToSend} = await editToChanges(data.message_update.bot_response, data.guild.general, {
async getJoinedMembers(roomID) {
- t.equal(roomID, "!uCtjHhfGlYbVnPVlkG:cadence.moe")
+ t.equal(roomID, "!hYnGGlPHlbujVVfktC:cadence.moe")
return new Promise(resolve => {
setTimeout(() => {
resolve({
diff --git a/d2m/converters/message-to-event.js b/d2m/converters/message-to-event.js
index 2914201..f0dc8fe 100644
--- a/d2m/converters/message-to-event.js
+++ b/d2m/converters/message-to-event.js
@@ -189,7 +189,7 @@ async function messageToEvent(message, guild, options = {}, di) {
if (!userRegex.some(rx => mxid.match(rx))) {
const localpart = mxid.match(/@([^:]*)/)
assert(localpart)
- const displayName = member.displayname || localpart[1]
+ const displayName = member.display_name || localpart[1]
if (writtenMentionsText.includes(localpart[1].toLowerCase()) || writtenMentionsText.includes(displayName.toLowerCase())) addMention(mxid)
}
}
diff --git a/d2m/converters/message-to-event.test.js b/d2m/converters/message-to-event.test.js
index 34f376f..f369912 100644
--- a/d2m/converters/message-to-event.test.js
+++ b/d2m/converters/message-to-event.test.js
@@ -273,9 +273,69 @@ test("message2event: simple reply to matrix user, reply fallbacks disabled", asy
}])
})
-test("message2event: simple written @mentions for matrix users", async t => {
- let called = 0
+test("message2event: simple written @mention for matrix user", async t => {
const events = await messageToEvent(data.message.simple_written_at_mention_for_matrix, data.guild.general, {}, {
+ api: {
+ async getJoinedMembers(roomID) {
+ t.equal(roomID, "!rEOspnYqdOalaIFniV:cadence.moe")
+ return new Promise(resolve => {
+ setTimeout(() => {
+ resolve({
+ joined: {
+ "@she_who_brings_destruction:matrix.org": {
+ avatar_url: "mxc://matrix.org/FKcfnfFZlEhspeMsERfYtCuO",
+ display_name: "ash (Old)"
+ },
+ "@tomskeleton:cadence.moe": {
+ avatar_url: "mxc://cadence.moe/OvYYicuOwfAACKaXKJCUPbVz",
+ display_name: "tomskeleton"
+ },
+ "@she_who_brings_destruction:cadence.moe": {
+ avatar_url: "mxc://cadence.moe/XDXLMbkieETPrjFupoeiwyyq",
+ display_name: "ash"
+ },
+ "@_ooye_bot:cadence.moe": {
+ avatar_url: "mxc://cadence.moe/jlrgFjYQHzfBvORedOmYqXVz",
+ display_name: "Out Of Your Element"
+ },
+ "@cadence:cadence.moe": {
+ avatar_url: "mxc://cadence.moe/GJDPWiryxIhyRBNJzRNYzAlh",
+ display_name: "cadence [they]"
+ },
+ "@_ooye_tomskeleton:cadence.moe": {
+ avatar_url: "mxc://cadence.moe/SdSrjjsrNVdyPTAKEGQUhKUK",
+ display_name: "tomskeleton"
+ },
+ "@_ooye_queergasm:cadence.moe": {
+ avatar_url: "mxc://cadence.moe/KqXYGbUqhPPJKifLmfpoLnmB",
+ display_name: "queergasm"
+ },
+ "@_ooye_.subtext:cadence.moe": {
+ avatar_url: "mxc://cadence.moe/heoCvaUmfCdpxdzaChwwkpEp",
+ display_name: ".subtext"
+ }
+ }
+ })
+ })
+ })
+ }
+ }
+ })
+ t.deepEqual(events, [{
+ $type: "m.room.message",
+ "m.mentions": {
+ user_ids: [
+ "@she_who_brings_destruction:cadence.moe"
+ ]
+ },
+ msgtype: "m.text",
+ body: "@ash do you need anything from the store btw as I'm heading there after gym"
+ }])
+})
+
+test("message2event: advanced written @mentions for matrix users", async t => {
+ let called = 0
+ const events = await messageToEvent(data.message.advanced_written_at_mention_for_matrix, data.guild.general, {}, {
api: {
async getJoinedMembers(roomID) {
called++
@@ -285,19 +345,19 @@ test("message2event: simple written @mentions for matrix users", async t => {
resolve({
joined: {
"@cadence:cadence.moe": {
- displayname: "cadence [they]",
+ display_name: "cadence [they]",
avatar_url: "whatever"
},
"@huckleton:cadence.moe": {
- displayname: "huck",
+ display_name: "huck",
avatar_url: "whatever"
},
"@_ooye_botrac4r:cadence.moe": {
- displayname: "botrac4r",
+ display_name: "botrac4r",
avatar_url: "whatever"
},
"@_ooye_bot:cadence.moe": {
- displayname: "Out Of Your Element",
+ display_name: "Out Of Your Element",
avatar_url: "whatever"
}
}
@@ -361,7 +421,7 @@ test("message2event: type 4 channel name change", async t => {
test("message2event: thread start message reference", async t => {
const events = await messageToEvent(data.special_message.thread_start_context, data.guild.general, {}, {
api: {
- getEvent: mockGetEvent(t, "!PnyBKvUBOhjuCucEfk:cadence.moe", "$FchUVylsOfmmbj-VwEs5Z9kY49_dt2zd0vWfylzy5Yo", {
+ getEvent: mockGetEvent(t, "!BnKuBPCvyfOkhcUjEu:cadence.moe", "$FchUVylsOfmmbj-VwEs5Z9kY49_dt2zd0vWfylzy5Yo", {
"type": "m.room.message",
"sender": "@_ooye_kyuugryphon:cadence.moe",
"content": {
diff --git a/db/orm.test.js b/db/orm.test.js
index 6043e77..ef5e2fb 100644
--- a/db/orm.test.js
+++ b/db/orm.test.js
@@ -26,6 +26,6 @@ test("orm: from: get pluck works", t => {
})
test("orm: from: join and pluck works", t => {
- const mxid = from("sim").join("sim_member", "mxid").and("WHERE discord_id = ? AND room_id = ?").pluck("mxid").get("771520384671416320", "!uCtjHhfGlYbVnPVlkG:cadence.moe")
+ const mxid = from("sim").join("sim_member", "mxid").and("WHERE discord_id = ? AND room_id = ?").pluck("mxid").get("771520384671416320", "!hYnGGlPHlbujVVfktC:cadence.moe")
t.equal(mxid, "@_ooye_bojack_horseman:cadence.moe")
})
diff --git a/m2d/converters/event-to-message.test.js b/m2d/converters/event-to-message.test.js
index e11cb8b..6fc8123 100644
--- a/m2d/converters/event-to-message.test.js
+++ b/m2d/converters/event-to-message.test.js
@@ -917,10 +917,10 @@ test("event2message: editing a plaintext body message", async t => {
"transaction_id": "m1693223873796.842"
},
"event_id": "$KxGwvVNzNcmlVbiI2m5kX-jMFNi3Jle71-uu1j7P7vM",
- "room_id": "!PnyBKvUBOhjuCucEfk:cadence.moe"
+ "room_id": "!BnKuBPCvyfOkhcUjEu:cadence.moe"
}, data.guild.general, {
api: {
- getEvent: mockGetEvent(t, "!PnyBKvUBOhjuCucEfk:cadence.moe", "$7LIdiJCEqjcWUrpzWzS8TELOlFfBEe4ytgS7zn2lbSs", {
+ getEvent: mockGetEvent(t, "!BnKuBPCvyfOkhcUjEu:cadence.moe", "$7LIdiJCEqjcWUrpzWzS8TELOlFfBEe4ytgS7zn2lbSs", {
type: "m.room.message",
sender: "@cadence:cadence.moe",
content: {
@@ -968,10 +968,10 @@ test("event2message: editing a plaintext message to be longer", async t => {
"transaction_id": "m1693223873796.842"
},
"event_id": "$KxGwvVNzNcmlVbiI2m5kX-jMFNi3Jle71-uu1j7P7vM",
- "room_id": "!PnyBKvUBOhjuCucEfk:cadence.moe"
+ "room_id": "!BnKuBPCvyfOkhcUjEu:cadence.moe"
}, data.guild.general, {
api: {
- getEvent: mockGetEvent(t, "!PnyBKvUBOhjuCucEfk:cadence.moe", "$7LIdiJCEqjcWUrpzWzS8TELOlFfBEe4ytgS7zn2lbSs", {
+ getEvent: mockGetEvent(t, "!BnKuBPCvyfOkhcUjEu:cadence.moe", "$7LIdiJCEqjcWUrpzWzS8TELOlFfBEe4ytgS7zn2lbSs", {
type: "m.room.message",
sender: "@cadence:cadence.moe",
content: {
@@ -1023,10 +1023,10 @@ test("event2message: editing a plaintext message to be shorter", async t => {
"transaction_id": "m1693223873796.842"
},
"event_id": "$KxGwvVNzNcmlVbiI2m5kX-jMFNi3Jle71-uu1j7P7vM",
- "room_id": "!PnyBKvUBOhjuCucEfk:cadence.moe"
+ "room_id": "!BnKuBPCvyfOkhcUjEu:cadence.moe"
}, data.guild.general, {
api: {
- getEvent: mockGetEvent(t, "!PnyBKvUBOhjuCucEfk:cadence.moe", "$7LIdiJCEqjcWUrpzWzS8TELOlFfBEe4ytgS7zn2lbSt", {
+ getEvent: mockGetEvent(t, "!BnKuBPCvyfOkhcUjEu:cadence.moe", "$7LIdiJCEqjcWUrpzWzS8TELOlFfBEe4ytgS7zn2lbSt", {
type: "m.room.message",
sender: "@cadence:cadence.moe",
content: {
@@ -1078,10 +1078,10 @@ test("event2message: editing a formatted body message", async t => {
"transaction_id": "m1693223873796.842"
},
"event_id": "$KxGwvVNzNcmlVbiI2m5kX-jMFNi3Jle71-uu1j7P7vM",
- "room_id": "!PnyBKvUBOhjuCucEfk:cadence.moe"
+ "room_id": "!BnKuBPCvyfOkhcUjEu:cadence.moe"
}, data.guild.general, {
api: {
- getEvent: mockGetEvent(t, "!PnyBKvUBOhjuCucEfk:cadence.moe", "$7LIdiJCEqjcWUrpzWzS8TELOlFfBEe4ytgS7zn2lbSs", {
+ getEvent: mockGetEvent(t, "!BnKuBPCvyfOkhcUjEu:cadence.moe", "$7LIdiJCEqjcWUrpzWzS8TELOlFfBEe4ytgS7zn2lbSs", {
type: "m.room.message",
sender: "@cadence:cadence.moe",
content: {
@@ -1278,7 +1278,7 @@ test("event2message: with layered rich replies, the preview should only be the r
msgtype: "m.text",
body: "> <@cadence:cadence.moe> two\n\nthree",
format: "org.matrix.custom.html",
- formatted_body: "In reply to @cadence:cadence.moe
two
three",
+ formatted_body: "In reply to @cadence:cadence.moe
two
three",
"m.relates_to": {
"m.in_reply_to": {
event_id: "$Fxy8SMoJuTduwReVkHZ1uHif9EuvNx36Hg79cltiA04"
@@ -1296,7 +1296,7 @@ test("event2message: with layered rich replies, the preview should only be the r
"msgtype": "m.text",
"body": "> <@cadence:cadence.moe> one\n\ntwo",
"format": "org.matrix.custom.html",
- "formatted_body": "In reply to @cadence:cadence.moe
one
two",
+ "formatted_body": "In reply to @cadence:cadence.moe
one
two",
"m.relates_to": {
"m.in_reply_to": {
"event_id": "$5UtboIC30EFlAYD_Oh0pSYVW8JqOp6GsDIJZHtT0Wls"
@@ -1445,7 +1445,7 @@ test("event2message: mentioning bridged rooms works", async t => {
msgtype: "m.text",
body: "wrong body",
format: "org.matrix.custom.html",
- formatted_body: `I'm just worm-form testing channel mentions`
+ formatted_body: `I'm just worm-form testing channel mentions`
},
event_id: "$g07oYSZFWBkxohNEfywldwgcWj1hbhDzQ1sBAKvqOOU",
origin_server_ts: 1688301929913,
@@ -1643,7 +1643,7 @@ test("event2message: text attachments work", async t => {
},
sender: "@cadence:cadence.moe",
event_id: "$c2WVyP6KcfAqh5imOa8e0xzt2C8JTR-cWbEd3GargEQ",
- room_id: "!PnyBKvUBOhjuCucEfk:cadence.moe"
+ room_id: "!BnKuBPCvyfOkhcUjEu:cadence.moe"
}),
{
messagesToDelete: [],
@@ -1677,7 +1677,7 @@ test("event2message: image attachments work", async t => {
url: "mxc://cadence.moe/IvxVJFLEuksCNnbojdSIeEvn"
},
event_id: "$CXQy3Wmg1A-gL_xAesC1HQcQTEXwICLdSwwUx55FBTI",
- room_id: "!PnyBKvUBOhjuCucEfk:cadence.moe"
+ room_id: "!BnKuBPCvyfOkhcUjEu:cadence.moe"
}),
{
messagesToDelete: [],
@@ -1726,7 +1726,7 @@ test("event2message: encrypted image attachments work", async t => {
}
},
event_id: "$JNhONhXO-5jrztZz8b7mbTMJasbU78TwQr4tog-3Mnk",
- room_id: "!PnyBKvUBOhjuCucEfk:cadence.moe"
+ room_id: "!BnKuBPCvyfOkhcUjEu:cadence.moe"
}),
{
messagesToDelete: [],
@@ -1770,7 +1770,7 @@ test("event2message: stickers work", async t => {
}
},
event_id: "$PdI-KjdQ8Z_Tb4x9_7wKRPZCsrrXym4BXtbAPekypuM",
- room_id: "!PnyBKvUBOhjuCucEfk:cadence.moe"
+ room_id: "!BnKuBPCvyfOkhcUjEu:cadence.moe"
}),
{
messagesToDelete: [],
diff --git a/matrix/api.js b/matrix/api.js
index 969ee06..7ec044a 100644
--- a/matrix/api.js
+++ b/matrix/api.js
@@ -103,7 +103,7 @@ function getStateEvent(roomID, type, key) {
/**
* "Any of the AS's users must be in the room. This API is primarily for Application Services and should be faster to respond than /members as it can be implemented more efficiently on the server."
* @param {string} roomID
- * @returns {Promise<{joined: {[mxid: string]: Ty.R.RoomMember}}>}
+ * @returns {Promise<{joined: {[mxid: string]: {avatar_url?: string, display_name?: string}}}>}
*/
function getJoinedMembers(roomID) {
return mreq.mreq("GET", `/client/v3/rooms/${roomID}/joined_members`)
diff --git a/test/data.js b/test/data.js
index bb43c02..9d1cdbc 100644
--- a/test/data.js
+++ b/test/data.js
@@ -421,6 +421,36 @@ module.exports = {
components: []
},
simple_written_at_mention_for_matrix: {
+ id: "1159030564049915915",
+ type: 0,
+ content: "@ash do you need anything from the store btw as I'm heading there after gym",
+ channel_id: "297272183716052993",
+ author: {
+ id: "221902610066571260",
+ username: "subtextual",
+ avatar: "c108f921e2fb84981197fe2b895e6a78",
+ discriminator: "0",
+ public_flags: 0,
+ flags: 0,
+ banner: null,
+ accent_color: null,
+ global_name: "subtext",
+ avatar_decoration_data: null,
+ banner_color: null
+ },
+ attachments: [],
+ embeds: [],
+ mentions: [],
+ mention_roles: [],
+ pinned: false,
+ mention_everyone: false,
+ tts: false,
+ timestamp: "2023-10-04T07:33:40.216000+00:00",
+ edited_timestamp: null,
+ flags: 0,
+ components: []
+ },
+ advanced_written_at_mention_for_matrix: {
id: "1126739682080858234",
type: 0,
content: "@Cadence, tell me about @Phil, the creator of the Chin Trick, who has become ever more powerful under the mentorship of @botrac4r and @huck",
diff --git a/test/ooye-test-data.sql b/test/ooye-test-data.sql
index 953ec5c..70d02ed 100644
--- a/test/ooye-test-data.sql
+++ b/test/ooye-test-data.sql
@@ -5,9 +5,10 @@ INSERT INTO guild_space (guild_id, space_id) VALUES
INSERT INTO channel_room (channel_id, room_id, name, nick, thread_parent, custom_avatar) VALUES
('112760669178241024', '!kLRqKKUQXcibIMtOpl:cadence.moe', 'heave', 'main', NULL, NULL),
-('497161350934560778', '!edUxjVdzgUvXDUIQCK:cadence.moe', 'amanda-spam', NULL, NULL, NULL),
-('160197704226439168', '!uCtjHhfGlYbVnPVlkG:cadence.moe', 'the-stanley-parable-channel', 'bots', NULL, NULL),
-('1100319550446252084', '!PnyBKvUBOhjuCucEfk:cadence.moe', 'worm-farm', NULL, NULL, NULL);
+('497161350934560778', '!CzvdIdUQXgUjDVKxeU:cadence.moe', 'amanda-spam', NULL, NULL, NULL),
+('160197704226439168', '!hYnGGlPHlbujVVfktC:cadence.moe', 'the-stanley-parable-channel', 'bots', NULL, NULL),
+('1100319550446252084', '!BnKuBPCvyfOkhcUjEu:cadence.moe', 'worm-farm', NULL, NULL, NULL),
+('297272183716052993', '!rEOspnYqdOalaIFniV:cadence.moe', 'general', NULL, NULL, NULL);
INSERT INTO sim (discord_id, sim_name, localpart, mxid) VALUES
('0', 'bot', '_ooye_bot', '@_ooye_bot:cadence.moe'),
@@ -18,7 +19,7 @@ INSERT INTO sim (discord_id, sim_name, localpart, mxid) VALUES
('111604486476181504', 'kyuugryphon', '_ooye_kyuugryphon', '@_ooye_kyuugryphon:cadence.moe');;
INSERT INTO sim_member (mxid, room_id, hashed_profile_content) VALUES
-('@_ooye_bojack_horseman:cadence.moe', '!uCtjHhfGlYbVnPVlkG:cadence.moe', NULL);
+('@_ooye_bojack_horseman:cadence.moe', '!hYnGGlPHlbujVVfktC:cadence.moe', NULL);
INSERT INTO message_channel (message_id, channel_id) VALUES
('1106366167788044450', '122155380120748034'),
@@ -83,7 +84,7 @@ INSERT INTO member_cache (room_id, mxid, displayname, avatar_url) VALUES
('!kLRqKKUQXcibIMtOpl:cadence.moe', '@cadence:cadence.moe', 'cadence [they]', NULL),
('!BpMdOUkWWhFxmTrENV:cadence.moe', '@cadence:cadence.moe', 'cadence [they]', 'malformed mxc'),
('!fGgIymcYWOqjbSRUdV:cadence.moe', '@cadence:cadence.moe', 'cadence [they]', 'mxc://cadence.moe/azCAhThKTojXSZJRoWwZmhvU'),
-('!PnyBKvUBOhjuCucEfk:cadence.moe', '@cadence:cadence.moe', 'cadence [they]', 'mxc://cadence.moe/azCAhThKTojXSZJRoWwZmhvU'),
+('!BnKuBPCvyfOkhcUjEu:cadence.moe', '@cadence:cadence.moe', 'cadence [they]', 'mxc://cadence.moe/azCAhThKTojXSZJRoWwZmhvU'),
('!maggESguZBqGBZtSnr:cadence.moe', '@cadence:cadence.moe', 'cadence [they]', 'mxc://cadence.moe/azCAhThKTojXSZJRoWwZmhvU');
COMMIT;