From 3d3671e05a13d4a3a21006f35afe0ca50db1fcca Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Sat, 10 Jan 2026 13:19:16 +1300 Subject: [PATCH] skip "cannot invite user that is joined" --- scripts/migrate-from-old-bridge.js | 10 +--------- src/d2m/actions/register-pk-user.js | 12 ++---------- src/d2m/actions/register-user.js | 12 ++---------- src/d2m/actions/register-webhook-user.js | 12 ++---------- src/matrix/api.js | 14 +++++++++++--- 5 files changed, 18 insertions(+), 42 deletions(-) diff --git a/scripts/migrate-from-old-bridge.js b/scripts/migrate-from-old-bridge.js index 40d6993..1842c16 100755 --- a/scripts/migrate-from-old-bridge.js +++ b/scripts/migrate-from-old-bridge.js @@ -82,15 +82,7 @@ async function migrateGuild(guild) { // Step 2: (Using old bridge access token) Join the new bridge to the old rooms and give it PL 100 console.log(`-- Joining channel ${channel.name}...`) await mreq.withAccessToken(oldAT, async () => { - try { - await api.inviteToRoom(roomID, newBridgeMxid) - } catch (e) { - if (e.message.includes("is already in the room")) { - // Great! - } else { - throw e - } - } + await api.inviteToRoom(roomID, newBridgeMxid) await utils.setUserPower(roomID, newBridgeMxid, 100, api) }) await api.joinRoom(roomID) diff --git a/src/d2m/actions/register-pk-user.js b/src/d2m/actions/register-pk-user.js index 3c914b6..6ecd077 100644 --- a/src/d2m/actions/register-pk-user.js +++ b/src/d2m/actions/register-pk-user.js @@ -87,16 +87,8 @@ async function ensureSimJoined(pkMessage, roomID) { // Ensure joined const existing = select("sim_member", "mxid", {room_id: roomID, mxid}).pluck().get() if (!existing) { - try { - await api.inviteToRoom(roomID, mxid) - await api.joinRoom(roomID, mxid) - } catch (e) { - if (e.message.includes("is already in the room.")) { - // Sweet! - } else { - throw e - } - } + await api.inviteToRoom(roomID, mxid) + await api.joinRoom(roomID, mxid) db.prepare("INSERT OR IGNORE INTO sim_member (room_id, mxid) VALUES (?, ?)").run(roomID, mxid) } return mxid diff --git a/src/d2m/actions/register-user.js b/src/d2m/actions/register-user.js index 966263b..35da4f5 100644 --- a/src/d2m/actions/register-user.js +++ b/src/d2m/actions/register-user.js @@ -86,16 +86,8 @@ async function ensureSimJoined(user, roomID) { // Ensure joined const existing = select("sim_member", "mxid", {room_id: roomID, mxid}).pluck().get() if (!existing) { - try { - await api.inviteToRoom(roomID, mxid) - await api.joinRoom(roomID, mxid) - } catch (e) { - if (e.message.includes("is already in the room.")) { - // Sweet! - } else { - throw e - } - } + await api.inviteToRoom(roomID, mxid) + await api.joinRoom(roomID, mxid) db.prepare("INSERT OR IGNORE INTO sim_member (room_id, mxid) VALUES (?, ?)").run(roomID, mxid) } return mxid diff --git a/src/d2m/actions/register-webhook-user.js b/src/d2m/actions/register-webhook-user.js index 309a120..145eeb8 100644 --- a/src/d2m/actions/register-webhook-user.js +++ b/src/d2m/actions/register-webhook-user.js @@ -77,16 +77,8 @@ async function ensureSimJoined(fakeUserID, author, roomID) { // Ensure joined const existing = select("sim_member", "mxid", {room_id: roomID, mxid}).pluck().get() if (!existing) { - try { - await api.inviteToRoom(roomID, mxid) - await api.joinRoom(roomID, mxid) - } catch (e) { - if (e.message.includes("is already in the room.")) { - // Sweet! - } else { - throw e - } - } + await api.inviteToRoom(roomID, mxid) + await api.joinRoom(roomID, mxid) db.prepare("INSERT OR IGNORE INTO sim_member (room_id, mxid) VALUES (?, ?)").run(roomID, mxid) } return mxid diff --git a/src/matrix/api.js b/src/matrix/api.js index 01f9c3b..a7b30f1 100644 --- a/src/matrix/api.js +++ b/src/matrix/api.js @@ -79,9 +79,17 @@ async function joinRoom(roomIDOrAlias, mxid, via) { } async function inviteToRoom(roomID, mxidToInvite, mxid) { - await mreq.mreq("POST", path(`/client/v3/rooms/${roomID}/invite`, mxid), { - user_id: mxidToInvite - }) + try { + await mreq.mreq("POST", path(`/client/v3/rooms/${roomID}/invite`, mxid), { + user_id: mxidToInvite + }) + } catch (e) { + if (e.message.includes("is already in the room.") || e.message.includes("cannot invite user that is joined")) { + // Sweet! + } else { + throw e + } + } } async function leaveRoom(roomID, mxid) {