diff --git a/module_auto_invite.py b/module_auto_invite.py index 22b2871..46730c4 100644 --- a/module_auto_invite.py +++ b/module_auto_invite.py @@ -19,18 +19,22 @@ class AutoInviteBotModule: return config async def on_new_event(self, event, state_events): - if event.type == "m.room.message": + # Respond only to membership changes, not all messages + if event.type == "m.room.member": room_id = event.room_id - logger.debug("Processing new message event in room: %s", room_id) + target_user_id = event.state_key + membership = event.content.get("membership") - # Fetch current state to check bot's membership - current_state = await self.api.get_room_state(room_id) - bot_member_event = current_state.get(("m.room.member", self.bot_user_id), {}) - bot_membership = bot_member_event.get("content", {}).get("membership") + logger.debug("Membership event in room %s for user %s: %s", room_id, target_user_id, membership) + + # Fetch the current state to check the bot's membership status + current_state = await self.api.get_room_state_by_type(room_id, "m.room.member", self.bot_user_id) + bot_membership = current_state.get("content", {}).get("membership", "leave") # Log current membership state - logger.debug("Bot's current membership in %s: %s", room_id, bot_membership) + logger.debug("Bot's current membership status in %s: %s", room_id, bot_membership) + # Invite bot if it is not already a member if bot_membership != "join": logger.info("Bot is not a member of the room. Sending invite...") try: @@ -48,4 +52,4 @@ class AutoInviteBotModule: def setup(config, api): module_config = AutoInviteBotModule.parse_config(config) - return AutoInviteBotModule(module_config, api) \ No newline at end of file + return AutoInviteBotModule(module_config, api)