diff --git a/bot/handler.py b/bot/handler.py index e8404c2..54e7741 100644 --- a/bot/handler.py +++ b/bot/handler.py @@ -132,7 +132,14 @@ async def _process_message(user_id: str, chat_id: str, text: str) -> None: from config import ROUTER_MODE if ROUTER_MODE: from router.nodes import get_node_registry - get_node_registry().track_user(user_id) + registry = get_node_registry() + is_new = registry.track_user(user_id) + if is_new: + nodes = registry.get_nodes_for_user(user_id) + online = [n for n in nodes if n.is_online] + if online: + names = ", ".join(n.display_name for n in online) + await send_text(chat_id, "chat_id", f"Available nodes: {names}") reply = await handle_command(user_id, text) if reply is not None: diff --git a/router/nodes.py b/router/nodes.py index c3fe818..dfd8d09 100644 --- a/router/nodes.py +++ b/router/nodes.py @@ -69,9 +69,12 @@ class NodeRegistry: return True return secret == self._secret - def track_user(self, user_id: str) -> None: - """Record a user as known (has sent at least one message).""" + def track_user(self, user_id: str) -> bool: + """Record a user as known. Returns True if this is their first message.""" + if user_id in self._known_users: + return False self._known_users.add(user_id) + return True def _get_notifiable_users(self, node: NodeConnection) -> Set[str]: """Get users to notify about a node event.