From b0ffb45e550b6c12df9f52e184e1fcd403c77424 Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Wed, 16 Apr 2025 22:42:00 +1200 Subject: [PATCH 1/3] Allow un-reacting in read-only rooms --- src/d2m/actions/create-room.js | 3 ++- src/d2m/actions/create-room.test.js | 3 ++- test/data.js | 4 +++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/d2m/actions/create-room.js b/src/d2m/actions/create-room.js index 0924631..19085c2 100644 --- a/src/d2m/actions/create-room.js +++ b/src/d2m/actions/create-room.js @@ -147,7 +147,8 @@ async function channelToKState(channel, guild, di) { "m.room.power_levels/": { events_default: everyoneCanSend ? 0 : 50, events: { - "m.reaction": 0 + "m.reaction": 0, + "m.room.redaction": 0 // only affects redactions of own events, required to be able to un-react }, notifications: { room: everyoneCanMentionEveryone ? 0 : 20 diff --git a/src/d2m/actions/create-room.test.js b/src/d2m/actions/create-room.test.js index 2f380bb..e653744 100644 --- a/src/d2m/actions/create-room.test.js +++ b/src/d2m/actions/create-room.test.js @@ -154,7 +154,8 @@ test("channel2room: read-only discord channel", async t => { "m.room.power_levels/": { events_default: 50, // <-- it should be read-only! events: { - "m.reaction": 0 + "m.reaction": 0, + "m.room.redaction": 0 }, notifications: { room: 20, diff --git a/test/data.js b/test/data.js index 1c44af5..01e49a4 100644 --- a/test/data.js +++ b/test/data.js @@ -75,7 +75,8 @@ module.exports = { "m.room.power_levels/": { events_default: 0, events: { - "m.reaction": 0 + "m.reaction": 0, + "m.room.redaction": 0 }, users: { "@test_auto_invite:example.org": 100 @@ -3025,6 +3026,7 @@ module.exports = { }, webhook_id: "1109360903096369153" }, + reply_with_only_embed: { type: 19, tts: false, From d326894b8a677f66bd52d8959c8bf86f97aa19ff Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Wed, 16 Apr 2025 22:44:48 +1200 Subject: [PATCH 2/3] Fix PK member lookup error messages --- src/d2m/actions/register-pk-user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/d2m/actions/register-pk-user.js b/src/d2m/actions/register-pk-user.js index cfd51af..477b0d8 100644 --- a/src/d2m/actions/register-pk-user.js +++ b/src/d2m/actions/register-pk-user.js @@ -148,10 +148,10 @@ async function fetchMessage(messageID) { try { var res = await fetch(`https://api.pluralkit.me/v2/messages/${messageID}`) if (res.ok) return res.json() - var errorGetter = res.json + var errorGetter = () => res.json() } catch (e) { // Catch any network issues too. - errorGetter = e.toString + errorGetter = () => e.toString() } // I think the backend needs some time to update. From 2522a74d7cca35cf196707d23e318eda8b42f1d0 Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Wed, 16 Apr 2025 22:45:07 +1200 Subject: [PATCH 3/3] Only ack read receipts if the event was bridged --- src/m2d/actions/send-event.js | 2 +- src/m2d/event-dispatcher.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/m2d/actions/send-event.js b/src/m2d/actions/send-event.js index edeb156..6b4eb26 100644 --- a/src/m2d/actions/send-event.js +++ b/src/m2d/actions/send-event.js @@ -62,7 +62,7 @@ async function resolvePendingFiles(message) { /** @param {Ty.Event.Outer_M_Room_Message | Ty.Event.Outer_M_Room_Message_File | Ty.Event.Outer_M_Sticker} event */ async function sendEvent(event) { const row = select("channel_room", ["channel_id", "thread_parent"], {room_id: event.room_id}).get() - if (!row) return // allow the bot to exist in unbridged rooms, just don't do anything with it + if (!row) return [] // allow the bot to exist in unbridged rooms, just don't do anything with it let channelID = row.channel_id let threadID = undefined if (row.thread_parent) { diff --git a/src/m2d/event-dispatcher.js b/src/m2d/event-dispatcher.js index a55c326..a8c0ba1 100644 --- a/src/m2d/event-dispatcher.js +++ b/src/m2d/event-dispatcher.js @@ -187,6 +187,7 @@ sync.addTemporaryListener(as, "type:m.room.message", guard("m.room.message", async event => { if (utils.eventSenderIsFromDiscord(event.sender)) return const messageResponses = await sendEvent.sendEvent(event) + if (!messageResponses.length) return if (event.type === "m.room.message" && event.content.msgtype === "m.text") { // @ts-ignore await matrixCommandHandler.execute(event)