From 5a401a187d089d762f4972cef7ee8c57a621b90b Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Fri, 19 Dec 2025 21:47:22 +1300 Subject: [PATCH] Suppress embed if an auxiliary m.notice is deleted --- src/m2d/actions/redact.js | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/m2d/actions/redact.js b/src/m2d/actions/redact.js index f980a54..9b26e8e 100644 --- a/src/m2d/actions/redact.js +++ b/src/m2d/actions/redact.js @@ -1,6 +1,6 @@ // @ts-check -const assert = require("assert").strict +const DiscordTypes = require("discord-api-types/v10") const Ty = require("../../types") const passthrough = require("../../passthrough") @@ -22,6 +22,19 @@ async function deleteMessage(event) { db.prepare("DELETE FROM message_room WHERE message_id = ?").run(rows[0].message_id) } +/** + * @param {Ty.Event.Outer_M_Room_Redaction} event + */ +async function suppressEmbeds(event) { + const rows = from("event_message").join("message_room", "message_id").join("historical_channel_room", "historical_room_index") + .select("reference_channel_id", "message_id").where({event_id: event.redacts}).all() + if (!rows.length) return + db.prepare("DELETE FROM event_message WHERE event_id = ?").run(event.redacts) + for (const row of rows) { + await discord.snow.channel.editMessage(row.reference_channel_id, row.message_id, {flags: DiscordTypes.MessageFlags.SuppressEmbeds}) + } +} + /** * @param {Ty.Event.Outer_M_Room_Redaction} event */ @@ -39,7 +52,12 @@ async function removeReaction(event) { * @param {Ty.Event.Outer_M_Room_Redaction} event */ async function handle(event) { - await deleteMessage(event) + const row = select("event_message", ["event_type", "event_subtype", "part"], {event_id: event.redacts}).get() + if (row && row.event_type === "m.room.message" && row.event_subtype === "m.notice" && row.part === 1) { + await suppressEmbeds(event) + } else { + await deleteMessage(event) + } await removeReaction(event) }