feat(节点跟踪): 改进用户跟踪功能并添加新用户通知
当新用户首次发送消息时,返回布尔值并通知可用节点。在handler.py中添加对新用户的处理逻辑,当检测到新用户时,向其发送当前在线的节点列表。这有助于新用户更快了解可用资源。
This commit is contained in:
parent
2a8f745b3d
commit
88b7eabe14
@ -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:
|
||||
|
||||
@ -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.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user