From 1b539cfa64d39a793ae4727bae3355f556abcd73 Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Fri, 1 Nov 2024 16:39:56 +1300 Subject: [PATCH] Forwarding text messages --- src/d2m/converters/message-to-event.js | 5 +- src/d2m/converters/message-to-event.test.js | 58 ++++++++++++++++ test/data.js | 74 +++++++++++++++++++++ test/ooye-test-data.sql | 6 +- 4 files changed, 138 insertions(+), 5 deletions(-) diff --git a/src/d2m/converters/message-to-event.js b/src/d2m/converters/message-to-event.js index 73106cd8..afdb4b84 100644 --- a/src/d2m/converters/message-to-event.js +++ b/src/d2m/converters/message-to-event.js @@ -555,9 +555,8 @@ async function messageToEvent(message, guild, options = {}, di) { // Try to merge the forwarded content with the forwarded notice let {body, formatted_body} = forwardedNotice.get() if (forwardedEvents.length >= 1 && ["m.text", "m.notice"].includes(forwardedEvents[0].msgtype)) { // Try to merge the forwarded content and the forwarded notice - forwardedNotice.add("\n", "
") - forwardedEvents[0].body = body + forwardedEvents[0].body - forwardedEvents[0].formatted_body = formatted_body + forwardedEvents[0].formatted_body + forwardedEvents[0].body = body + "\n" + forwardedEvents[0].body + forwardedEvents[0].formatted_body = formatted_body + "
" + forwardedEvents[0].formatted_body } else { await addTextEvent(body, formatted_body, "m.notice") } diff --git a/src/d2m/converters/message-to-event.test.js b/src/d2m/converters/message-to-event.test.js index 115d99ad..4ae342c9 100644 --- a/src/d2m/converters/message-to-event.test.js +++ b/src/d2m/converters/message-to-event.test.js @@ -1043,3 +1043,61 @@ test("message2event: forwarded image", async t => { }, ]) }) + +test("message2event: constructed forwarded message", async t => { + const events = await messageToEvent(data.message.constructed_forwarded_message, {}, {}, { + api: { + async getJoinedMembers(roomID) { + return { + joined: { + "@_ooye_bot:cadence.moe": {display_name: null, avatar_url: null}, + "@user:matrix.org": {display_name: null, avatar_url: null} + } + } + } + } + }) + t.deepEqual(events, [ + { + $type: "m.room.message", + body: "[🔀 Forwarded from #wonderland]" + + "\n» What's cooking, good looking? :hipposcope:", + format: "org.matrix.custom.html", + formatted_body: `🔀 Forwarded from wonderland` + + `
What's cooking, good looking? :hipposcope:
`, + "m.mentions": {}, + msgtype: "m.notice", + }, + { + $type: "m.room.message", + body: "100km.gif", + external_url: "https://bridge.example.org/download/discordcdn/112760669178241024/1296237494987133070/100km.gif", + filename: "100km.gif", + info: { + h: 300, + mimetype: "image/gif", + size: 2965649, + w: 300, + }, + "m.mentions": {}, + msgtype: "m.image", + url: "mxc://cadence.moe/qDAotmebTfEIfsAIVCEZptLh", + }, + { + $type: "m.room.message", + body: "» | ## This man" + + "\n» | " + + "\n» | ## This man is 100 km away from your house" + + "\n» | " + + "\n» | ### Distance away" + + "\n» | 99 km" + + "\n» | " + + "\n» | ### Distance away" + + "\n» | 98 km", + format: "org.matrix.custom.html", + formatted_body: "

This man

This man is 100 km away from your house

Distance away
99 km

Distance away
98 km

", + "m.mentions": {}, + msgtype: "m.notice" + } + ]) +}) diff --git a/test/data.js b/test/data.js index 6b491084..8adc4595 100644 --- a/test/data.js +++ b/test/data.js @@ -2190,6 +2190,80 @@ module.exports = { } } ] + }, + constructed_forwarded_message: { type: 0, + content: "", + mentions: [], + mention_roles: [], + attachments: [], + embeds: [], + timestamp: "2024-10-16T22:25:01.973000+00:00", + edited_timestamp: null, + flags: 16384, + components: [], + id: "1296237495993892916", + channel_id: "112760669178241024", + author: { + id: "113340068197859328", + username: "kumaccino", + avatar: "a8829abe66866d7797b36f0bfac01086", + discriminator: "0", + public_flags: 128, + flags: 128, + banner: null, + accent_color: null, + global_name: "kumaccino", + avatar_decoration_data: null, + banner_color: null, + clan: null + }, + pinned: false, + mention_everyone: false, + tts: false, + message_reference: { + type: 1, + channel_id: "176333891320283136", + message_id: "1191567971970191490" + }, + position: 0, + message_snapshots: [ + { + message: { + type: 0, + content: "What's cooking, good looking? <:hipposcope:393635038903926784>", + mentions: [], + mention_roles: [], + attachments: [ + { + id: "1296237494987133070", + filename: "100km.gif", + size: 2965649, + url: "https://cdn.discordapp.com/attachments/112760669178241024/1296237494987133070/100km.gif?ex=67118ebd&is=67103d3d&hm=8ed76d424f92f11366989f2ebc713d4f8206706ef712571e934da45b59944f77&", proxy_url: "https://media.discordapp.net/attachments/112760669178241024/1296237494987133070/100km.gif?ex=67118ebd&is=67103d3d&hm=8ed76d424f92f11366989f2ebc713d4f8206706ef712571e934da45b59944f77&", width: 300, + height: 300, + content_type: "image/gif" + } + ], + embeds: [{ + type: "rich", + title: "This man is 100 km away from your house", + author: { + name: "This man" + }, + fields: [{ + name: "Distance away", + value: "99 km" + }, { + name: "Distance away", + value: "98 km" + }] + }], + timestamp: "2022-09-15T01:20:58.177000+00:00", + edited_timestamp: null, + flags: 0, + components: [] + } + } + ] } }, pk_message: { diff --git a/test/ooye-test-data.sql b/test/ooye-test-data.sql index 7e22e9f6..af7ea7be 100644 --- a/test/ooye-test-data.sql +++ b/test/ooye-test-data.sql @@ -64,7 +64,8 @@ INSERT INTO message_channel (message_id, channel_id) VALUES ('1273204543739396116', '687028734322147344'), ('1273743950028607530', '1100319550446252084'), ('1278002262400176128', '1100319550446252084'), -('1278001833876525057', '1100319550446252084'); +('1278001833876525057', '1100319550446252084'), +('1191567971970191490', '176333891320283136'); INSERT INTO event_message (event_id, event_type, event_subtype, message_id, part, reaction_part, source) VALUES ('$X16nfVks1wsrhq4E9SSLiqrf2N8KD0erD0scZG7U5xg', 'm.room.message', 'm.text', '1126786462646550579', 0, 0, 1), @@ -103,7 +104,8 @@ INSERT INTO event_message (event_id, event_type, event_subtype, message_id, part ('$qmyjr-ISJtnOM5WTWLI0fT7uSlqRLgpyin2d2NCglCU', 'm.room.message', 'm.text', '1273204543739396116', 0, 0, 0), ('$W1nsDhNIojWrcQOdnOD9RaEvrz2qyZErQoNhPRs1nK4', 'm.room.message', 'm.text', '1273743950028607530', 0, 0, 0), ('$UTqiL3Zj3FC4qldxRLggN1fhygpKl8sZ7XGY5f9MNbF', 'm.room.message', 'm.text', '1278002262400176128', 0, 0, 1), -('$aLVZyiC3HlOu-prCSIaXlQl68I8leUdnPFiCwkgn6qM', 'm.room.message', 'm.text', '1278001833876525057', 0, 0, 1); +('$aLVZyiC3HlOu-prCSIaXlQl68I8leUdnPFiCwkgn6qM', 'm.room.message', 'm.text', '1278001833876525057', 0, 0, 1), +('$tBIT8mO7XTTCgIINyiAIy6M2MSoPAdJenRl_RLyYuaE', 'm.room.message', 'm.text', '1191567971970191490', 0, 0, 1); INSERT INTO file (discord_url, mxc_url) VALUES ('https://cdn.discordapp.com/attachments/497161332244742154/1124628646431297546/image.png', 'mxc://cadence.moe/qXoZktDqNtEGuOCZEADAMvhM'),