diff --git a/matrix_keycloak_bot.py b/matrix_keycloak_bot.py index 1de8be4..a58a250 100644 --- a/matrix_keycloak_bot.py +++ b/matrix_keycloak_bot.py @@ -112,6 +112,7 @@ async def on_message(client: AsyncClient, room: MatrixRoom, event: RoomMessageTe parts = body.split(maxsplit=1) if len(parts) < 2: await send_message_safe( + client, room_id=room.room_id, message_type="m.room.message", content={"msgtype": "m.notice", "body": "Usage: !request "}, @@ -188,9 +189,9 @@ async def on_reaction(client: AsyncClient, room: MatrixRoom, event: ReactionEven if event.sender not in ADMIN_MATRIX_IDS: return - relates_to = event.content.get("m.relates_to", {}) - target_event_id = relates_to.get("event_id") - emoji = relates_to.get("key") + # matrix-nio exposes target event ID and emoji as direct properties + target_event_id = event.reacts_to + emoji = event.key # Check if this reaction targets an active pending request if not target_event_id or target_event_id not in pending_requests: @@ -216,8 +217,8 @@ async def on_reaction(client: AsyncClient, room: MatrixRoom, event: ReactionEven f"has been approved!" if success else f"⚠️ Approval failed: {msg}" ) await send_message_safe( + client, room_id=request["origin_room_id"], - message_type="m.room.message", content={"msgtype": "m.notice", "body": user_msg}, ) @@ -228,8 +229,8 @@ async def on_reaction(client: AsyncClient, room: MatrixRoom, event: ReactionEven ) await send_message_safe( + client, room_id=request["origin_room_id"], - message_type="m.room.message", content={ "msgtype": "m.notice", "body": f"Your request for group '{request['requested_group']}' was denied.", @@ -240,8 +241,8 @@ async def on_reaction(client: AsyncClient, room: MatrixRoom, event: ReactionEven # Update the original admin room message to reflect resolution status await send_message_safe( + client, room_id=ADMIN_ROOM_ID, - message_type="m.room.message", content={ "msgtype": "m.text", "body": status_text,