refactor: 统一使用现代类型注解替代传统类型注解
- 将 Dict、List 等传统类型注解替换为 dict、list 等现代类型注解 - 更新类型注解以更精确地反映变量类型 - 修复部分类型注解与实际使用不匹配的问题 - 优化部分代码逻辑以提高类型安全性
This commit is contained in:
+20
-7
@@ -7,6 +7,7 @@ import json
|
||||
import logging
|
||||
import threading
|
||||
import time
|
||||
from typing import Any, Dict
|
||||
|
||||
import lark_oapi as lark
|
||||
from lark_oapi.api.im.v1 import P2ImMessageReceiveV1
|
||||
@@ -25,7 +26,7 @@ _last_message_time: float = 0.0
|
||||
_reconnect_count: int = 0
|
||||
|
||||
|
||||
def get_ws_status() -> dict:
|
||||
def get_ws_status() -> dict[str, Any]:
|
||||
"""Return WebSocket connection status."""
|
||||
return {
|
||||
"connected": _ws_connected,
|
||||
@@ -39,8 +40,17 @@ def _handle_message(data: P2ImMessageReceiveV1) -> None:
|
||||
_last_message_time = time.time()
|
||||
|
||||
try:
|
||||
message = data.event.message
|
||||
sender = data.event.sender
|
||||
event = data.event
|
||||
if event is None:
|
||||
logger.warning("Received event with no data")
|
||||
return
|
||||
|
||||
message = event.message
|
||||
sender = event.sender
|
||||
|
||||
if message is None:
|
||||
logger.warning("Received event with no message")
|
||||
return
|
||||
|
||||
logger.debug(
|
||||
"event type=%r chat_type=%r content=%r",
|
||||
@@ -53,7 +63,7 @@ def _handle_message(data: P2ImMessageReceiveV1) -> None:
|
||||
logger.info("Skipping non-text message_type=%r", message.message_type)
|
||||
return
|
||||
|
||||
chat_id: str = message.chat_id
|
||||
chat_id: str = message.chat_id or ""
|
||||
raw_content: str = message.content or "{}"
|
||||
content_obj = json.loads(raw_content)
|
||||
text: str = content_obj.get("text", "").strip()
|
||||
@@ -119,8 +129,9 @@ async def _process_message(user_id: str, chat_id: str, text: str) -> None:
|
||||
if nodes:
|
||||
lines = ["Connected Nodes:"]
|
||||
for n in nodes:
|
||||
marker = " → " if n.get("node_id") == registry.get_active_node(user_id) else " "
|
||||
lines.append(f"{marker}{n['display_name']} sessions={n['sessions']} {n['status']}")
|
||||
active_node = registry.get_active_node(user_id)
|
||||
marker = " → " if n.get("node_id") == (active_node.node_id if active_node else None) else " "
|
||||
lines.append(f"{marker}{n.get('display_name', 'unknown')} sessions={n.get('sessions', 0)} {n.get('status', 'unknown')}")
|
||||
lines.append("\nUse \"/node <name>\" to switch active node.")
|
||||
await send_text(chat_id, "chat_id", "\n".join(lines))
|
||||
else:
|
||||
@@ -144,7 +155,9 @@ async def _process_message(user_id: str, chat_id: str, text: str) -> None:
|
||||
|
||||
def _handle_any(data: lark.CustomizedEvent) -> None:
|
||||
"""Catch-all handler to log any event the SDK receives."""
|
||||
logger.info("RAW CustomizedEvent: %s", lark.JSON.marshal(data)[:500])
|
||||
marshaled = lark.JSON.marshal(data)
|
||||
if marshaled:
|
||||
logger.info("RAW CustomizedEvent: %s", marshaled[:500])
|
||||
|
||||
|
||||
def build_event_handler() -> lark.EventDispatcherHandler:
|
||||
|
||||
Reference in New Issue
Block a user