From 5bfd753af3c60a40c030d755b774f3f5516f8686 Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Tue, 8 Sep 2026 18:19:53 +1200 Subject: [PATCH 1/2] Test moving the reply link --- src/m2d/converters/event-to-message.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/m2d/converters/event-to-message.js b/src/m2d/converters/event-to-message.js index cff08f0..c15f8ae 100644 --- a/src/m2d/converters/event-to-message.js +++ b/src/m2d/converters/event-to-message.js @@ -762,11 +762,6 @@ async function eventToMessage(event, guild, channel, di) { } replyLine = await getL1L2ReplyLine() - const row = from("event_message").join("message_room", "message_id").join("historical_channel_room", "historical_room_index") - .select("reference_channel_id", "message_id").where({event_id: repliedToEventId}).and("ORDER BY part").get() - if (row) { - replyLine += `https://discord.com/channels/${guild.id}/${row.reference_channel_id}/${row.message_id} ` - } // If the event has been edited, the homeserver will include the relation in `unsigned`. if (repliedToEvent.unsigned?.["m.relations"]?.["m.replace"]?.content?.["m.new_content"]) { repliedToEvent = repliedToEvent.unsigned["m.relations"]["m.replace"] // Note: this changes which event_id is in repliedToEvent. @@ -777,15 +772,15 @@ async function eventToMessage(event, guild, channel, di) { const fileReplyContentAlternative = attachmentEmojis.get(repliedToEvent.content.msgtype) let contentPreview if (fileReplyContentAlternative) { - contentPreview = " " + fileReplyContentAlternative + contentPreview = fileReplyContentAlternative } else if (repliedToEvent.unsigned?.redacted_because) { - contentPreview = " (in reply to a deleted message)" + contentPreview = "(in reply to a deleted message)" } else if (typeof originalRepliedToContent !== "string") { // in reply to a weird metadata event like m.room.name, m.room.member... // I'm not implementing text fallbacks for arbitrary room events. this should cover most cases // this has never ever happened in the wild anyway repliedToEvent.sender = "" - contentPreview = " (channel details edited)" + contentPreview = "(channel details edited)" } else { // Generate a reply preview for a standard message let repliedToContent = originalRepliedToContent @@ -802,7 +797,7 @@ async function eventToMessage(event, guild, channel, di) { repliedToContent = entities.decodeHTML5Strict(repliedToContent) // Remove entities like & " const contentPreviewChunks = chunk(repliedToContent, 50) if (contentPreviewChunks.length) { - contentPreview = ": " + contentPreviewChunks[0] + contentPreview = contentPreviewChunks[0] contentPreview = contentPreview.replace(/\bhttps?:\/\/[^ )]*/g, url => { const originalUrlIndex = originalRepliedToContent.indexOf(url) if (originalUrlIndex !== -1 && originalRepliedToContent[originalUrlIndex + url.length]?.match(/[^ )>"'`]/)) { // URL was truncated by chunking, replace it @@ -829,7 +824,12 @@ async function eventToMessage(event, guild, channel, di) { if (!senderName) senderName = sender.match(/@([^:]*)/)?.[1] if (senderName) replyLine += `**Ⓜ${senderName}**` } - replyLine = `-# > ${replyLine}${contentPreview}\n` + const row = from("event_message").join("message_room", "message_id").join("historical_channel_room", "historical_room_index") + .select("reference_channel_id", "message_id").where({event_id: repliedToEventId}).and("ORDER BY part").get() + if (row) { + contentPreview = `[${contentPreview}]()` + } + replyLine = `-# > ${replyLine} ${contentPreview}\n` })() if (shouldProcessTextEvent) { From 9eb2ba1458a6711b3d4f2110554524932cc123ec Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Wed, 9 Sep 2026 00:19:10 +1200 Subject: [PATCH 2/2] Add 15 characters to m->d reply preview --- src/m2d/converters/event-to-message.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/m2d/converters/event-to-message.js b/src/m2d/converters/event-to-message.js index adc5f97..ea53e0a 100644 --- a/src/m2d/converters/event-to-message.js +++ b/src/m2d/converters/event-to-message.js @@ -754,7 +754,7 @@ async function eventToMessage(event, guild, channel, di) { .replace(/(?:\n|
)+/g, " ") // Should all be on one line .replace(/]*data-mx-spoiler\b[^>]*>.*?<\/span>/g, "[spoiler]") // Good enough method of removing spoiler content. (I don't want to break out the HTML parser unless I have to.) .replace(/<[^>]+>/g, "") // Completely strip all HTML tags and formatting. - ), 50) + ), 65) replyLine = "-# > " + contentPreviewChunks[0] if (contentPreviewChunks.length > 1) replyLine = replyLine.replace(/[,.']$/, "") + "..." replyLine += "\n"