From 7728f5d16d3050da018c9d62b1897b97d1a58778 Mon Sep 17 00:00:00 2001 From: Dorian Zedler Date: Tue, 4 Oct 2022 10:24:46 +0200 Subject: [PATCH] Fix: issue when power level events are higher than bot level --- src/matrixHelper.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/matrixHelper.py b/src/matrixHelper.py index 79bb5a8..4f8b298 100644 --- a/src/matrixHelper.py +++ b/src/matrixHelper.py @@ -162,15 +162,27 @@ class MatrixHelper: return False users = await self.get_room_power_levels(room) + if not self._matrix_username in users or users[self._matrix_username] < 100: + self._admin_client.room.set_admin(room, self._matrix_username) + users = await self.get_room_power_levels(room) + users[user] = power_level - if not self._matrix_username in users: - users[self._matrix_username] = 200 + + room_power_level_events = MatrixHelper.ROOM_POWER_LEVEL_EVENTS + for key, value in room_power_level_events.items(): + if value > users[self._matrix_username]: + room_power_level_events[key] = users[self._matrix_username] result = await self._client.room_put_state(room, "m.room.power_levels", { - "events": MatrixHelper.ROOM_POWER_LEVEL_EVENTS, + "events": room_power_level_events, "invite": 50, "users": users }) - assert result.event_id is not None + + if isinstance(result, nio.ErrorResponse): + logging.error(f"Error while setting power level of user {user} in room {room} to {power_level}") + logging.error(result) + logging.error(f"Current power levels: {users}") + return False return True