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
|
from config import ROUTER_MODE
|
||||||
if ROUTER_MODE:
|
if ROUTER_MODE:
|
||||||
from router.nodes import get_node_registry
|
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)
|
reply = await handle_command(user_id, text)
|
||||||
if reply is not None:
|
if reply is not None:
|
||||||
|
|||||||
@ -69,9 +69,12 @@ class NodeRegistry:
|
|||||||
return True
|
return True
|
||||||
return secret == self._secret
|
return secret == self._secret
|
||||||
|
|
||||||
def track_user(self, user_id: str) -> None:
|
def track_user(self, user_id: str) -> bool:
|
||||||
"""Record a user as known (has sent at least one message)."""
|
"""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)
|
self._known_users.add(user_id)
|
||||||
|
return True
|
||||||
|
|
||||||
def _get_notifiable_users(self, node: NodeConnection) -> Set[str]:
|
def _get_notifiable_users(self, node: NodeConnection) -> Set[str]:
|
||||||
"""Get users to notify about a node event.
|
"""Get users to notify about a node event.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user