From 71c553a9cf5ae8ffca22263c62fb7805fd4fcb8a Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Wed, 28 Aug 2024 02:05:40 +1200 Subject: [PATCH] Test cases for bridging author command metadata --- .../message-to-event.embeds.test.js | 35 +++++++++++++++++++ d2m/converters/message-to-event.js | 11 ++++-- test/ooye-test-data.sql | 3 +- 3 files changed, 45 insertions(+), 4 deletions(-) diff --git a/d2m/converters/message-to-event.embeds.test.js b/d2m/converters/message-to-event.embeds.test.js index 61a08224..05e3b5d5 100644 --- a/d2m/converters/message-to-event.embeds.test.js +++ b/d2m/converters/message-to-event.embeds.test.js @@ -6,6 +6,13 @@ const Ty = require("../../types") test("message2event embeds: nothing but a field", async t => { const events = await messageToEvent(data.message_with_embeds.nothing_but_a_field, data.guild.general, {}) t.deepEqual(events, [{ + $type: "m.room.message", + body: "> ↪️ @papiophidian: used `/stats`", + format: "org.matrix.custom.html", + formatted_body: "
↪️ @papiophidian used /stats
", + "m.mentions": {}, + msgtype: "m.text", + }, { $type: "m.room.message", "m.mentions": {}, msgtype: "m.notice", @@ -143,6 +150,13 @@ test("message2event embeds: crazy html is all escaped", async t => { test("message2event embeds: title without url", async t => { const events = await messageToEvent(data.message_with_embeds.title_without_url, data.guild.general) t.deepEqual(events, [{ + $type: "m.room.message", + body: "> ↪️ @papiophidian: used `/stats`", + format: "org.matrix.custom.html", + formatted_body: "
↪️ @papiophidian used /stats
", + "m.mentions": {}, + msgtype: "m.text", + }, { $type: "m.room.message", msgtype: "m.notice", body: "| ## Hi, I'm Amanda!\n| \n| I condone pirating music!", @@ -155,6 +169,13 @@ test("message2event embeds: title without url", async t => { test("message2event embeds: url without title", async t => { const events = await messageToEvent(data.message_with_embeds.url_without_title, data.guild.general) t.deepEqual(events, [{ + $type: "m.room.message", + body: "> ↪️ @papiophidian: used `/stats`", + format: "org.matrix.custom.html", + formatted_body: "
↪️ @papiophidian used /stats
", + "m.mentions": {}, + msgtype: "m.text", + }, { $type: "m.room.message", msgtype: "m.notice", body: "| I condone pirating music!", @@ -167,6 +188,13 @@ test("message2event embeds: url without title", async t => { test("message2event embeds: author without url", async t => { const events = await messageToEvent(data.message_with_embeds.author_without_url, data.guild.general) t.deepEqual(events, [{ + $type: "m.room.message", + body: "> ↪️ @papiophidian: used `/stats`", + format: "org.matrix.custom.html", + formatted_body: "
↪️ @papiophidian used /stats
", + "m.mentions": {}, + msgtype: "m.text", + }, { $type: "m.room.message", msgtype: "m.notice", body: "| ## Amanda\n| \n| I condone pirating music!", @@ -179,6 +207,13 @@ test("message2event embeds: author without url", async t => { test("message2event embeds: author url without name", async t => { const events = await messageToEvent(data.message_with_embeds.author_url_without_name, data.guild.general) t.deepEqual(events, [{ + $type: "m.room.message", + body: "> ↪️ @papiophidian: used `/stats`", + format: "org.matrix.custom.html", + formatted_body: "
↪️ @papiophidian used /stats
", + "m.mentions": {}, + msgtype: "m.text", + }, { $type: "m.room.message", msgtype: "m.notice", body: "| I condone pirating music!", diff --git a/d2m/converters/message-to-event.js b/d2m/converters/message-to-event.js index e6044b6a..b86293e7 100644 --- a/d2m/converters/message-to-event.js +++ b/d2m/converters/message-to-event.js @@ -32,7 +32,10 @@ function getDiscordParseCallbacks(message, guild, useHTML) { /** @param {{id: string, type: "discordUser"}} node */ user: node => { const mxid = select("sim", "mxid", {user_id: node.id}).pluck().get() - const username = message.mentions.find(ment => ment.id === node.id)?.username || node.id + const interaction = message.interaction_metadata || message.interaction + const username = message.mentions.find(ment => ment.id === node.id)?.username + || (interaction?.user.id === node.id ? interaction.user.username : null) + || node.id if (mxid && useHTML) { return `@${username}` } else { @@ -229,9 +232,11 @@ async function messageToEvent(message, guild, options = {}, di) { }] } - if (message.type === DiscordTypes.MessageType.ChatInputCommand && message.interaction_metadata && "name" in message.interaction_metadata) { + const interaction = message.interaction_metadata || message.interaction + if (message.type === DiscordTypes.MessageType.ChatInputCommand && interaction && "name" in interaction) { // Commands are sent by the responding bot. Need to attach the metadata of the person using the command at the top. - message.content = `> ↪️ <@${message.interaction_metadata.user.id}> used \`/${message.interaction_metadata.name}\`\n${message.content}` + if (message.content) message.content = `\n${message.content}` + message.content = `> ↪️ <@${interaction.user.id}> used \`/${interaction.name}\`${message.content}` } /** diff --git a/test/ooye-test-data.sql b/test/ooye-test-data.sql index 1fb9e244..370c6aa8 100644 --- a/test/ooye-test-data.sql +++ b/test/ooye-test-data.sql @@ -23,7 +23,8 @@ INSERT INTO sim (user_id, sim_name, localpart, mxid) VALUES ('114147806469554185', 'extremity', '_ooye_extremity', '@_ooye_extremity:cadence.moe'), ('111604486476181504', 'kyuugryphon', '_ooye_kyuugryphon', '@_ooye_kyuugryphon:cadence.moe'), ('1109360903096369153', 'amanda', '_ooye_amanda', '@_ooye_amanda:cadence.moe'), -('43d378d5-1183-47dc-ab3c-d14e21c3fe58', '_pk_zoego', '_ooye__pk_zoego', '@_ooye__pk_zoego:cadence.moe'); +('43d378d5-1183-47dc-ab3c-d14e21c3fe58', '_pk_zoego', '_ooye__pk_zoego', '@_ooye__pk_zoego:cadence.moe'), +('320067006521147393', 'papiophidian', '_ooye_papiophidian', '@_ooye_papiophidian:cadence.moe'); INSERT INTO sim_proxy (user_id, proxy_owner_id, displayname) VALUES ('43d378d5-1183-47dc-ab3c-d14e21c3fe58', '196188877885538304', 'Azalea &flwr; 🌺');