diff --git a/bot.py b/bot.py index 32b0c90..f505d0e 100644 --- a/bot.py +++ b/bot.py @@ -141,7 +141,7 @@ class Bot: self.llm = AsyncOpenAI(base_url=LITELLM_URL, api_key=LITELLM_KEY) if LITELLM_URL else None self.room_models: dict[str, str] = {} # room_id -> model name self.auto_rename_rooms: set[str] = set() # rooms with auto-rename enabled - self.renamed_rooms: set[str] = set() # rooms already renamed this session + self.renamed_rooms: dict[str, float] = {} # room_id -> timestamp of last rename self._loaded_rooms: set[str] = set() # rooms where we've loaded state self._sync_token_received = False self._verifications: dict[str, dict] = {} # txn_id -> verification state @@ -483,12 +483,14 @@ class Bot: ) reply = resp.choices[0].message.content await self._send_text(room.room_id, reply) - # Auto-rename room after first AI response + # Auto-rename room after first AI response or after a conversation gap # In DMs: always auto-rename. In groups: only if explicitly enabled. is_dm = room.member_count == 2 + last_rename = self.renamed_rooms.get(room.room_id, 0) + gap_seconds = time.time() - last_rename if last_rename else float("inf") should_rename = ( - room.room_id not in self.renamed_rooms - and (is_dm or room.room_id in self.auto_rename_rooms) + (is_dm or room.room_id in self.auto_rename_rooms) + and gap_seconds > 300 # Re-rename after 5min gap (new topic) ) if should_rename: await self._auto_rename_room(room, user_message, reply) @@ -535,11 +537,7 @@ class Bot: async def _auto_rename_room(self, room, user_message: str, ai_reply: str): """Generate a short topic title and set it as the room name (Open WebUI style).""" - # Skip if room already has a meaningful name (not default) - current_name = getattr(room, "name", "") or "" - if current_name and current_name.lower() not in ("", "ai", "empty room", "new chat"): - self.renamed_rooms.add(room.room_id) - return + # Skip rename check — always generate fresh title based on current conversation try: resp = await self.llm.chat.completions.create( @@ -564,7 +562,7 @@ class Bot: room.room_id, "m.room.name", {"name": title}, state_key="", ) - self.renamed_rooms.add(room.room_id) + self.renamed_rooms[room.room_id] = time.time() logger.info("Auto-renamed room %s to: %s", room.room_id, title) except Exception: logger.debug("Auto-rename failed", exc_info=True)