From 8c506ed27009e9c8e15186a9c1af0bae49acdefc Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Mon, 15 Jul 2024 15:27:21 +1200 Subject: [PATCH] Drop admin permissions correctly --- d2m/actions/register-user.js | 4 +++- discord/utils.js | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/d2m/actions/register-user.js b/d2m/actions/register-user.js index 6b688d4..2ea0afc 100644 --- a/d2m/actions/register-user.js +++ b/d2m/actions/register-user.js @@ -197,9 +197,11 @@ async function syncUser(user, member, channel, guild, roomID) { await api.sendState(roomID, "m.room.member", mxid, content, mxid) // Update power levels const powerLevelsStateContent = await api.getStateEvent(roomID, "m.room.power_levels", "") + const oldPowerLevel = powerLevelsStateContent.users?.[mxid] || 0 mixin(powerLevelsStateContent, {users: {[mxid]: powerLevel}}) if (powerLevel === 0) delete powerLevelsStateContent.users[mxid] // keep the event compact - await api.sendState(roomID, "m.room.power_levels", "", powerLevelsStateContent) + const sendPowerLevelAs = powerLevel < oldPowerLevel ? mxid : undefined // bridge bot won't not have permission to demote equal power users, so do this action as themselves + await api.sendState(roomID, "m.room.power_levels", "", powerLevelsStateContent, sendPowerLevelAs) // Update cached hash db.prepare("UPDATE sim_member SET hashed_profile_content = ? WHERE room_id = ? AND mxid = ?").run(currentHash, roomID, mxid) } diff --git a/discord/utils.js b/discord/utils.js index c7045ec..6e95d17 100644 --- a/discord/utils.js +++ b/discord/utils.js @@ -103,10 +103,10 @@ function isWebhookMessage(message) { /** * Ephemeral messages can be generated if a slash command is attached to the same bot that OOYE is running on - * @param {DiscordTypes.APIMessage} message + * @param {Pick} message */ function isEphemeralMessage(message) { - return message.flags & (1 << 6); + return message.flags && (message.flags & (1 << 6)); } /** @param {string} snowflake */