refactor(api): 简化消息统计和会话名称获取逻辑

- 移除 `get_message_stats_by_chat` 中冗余的 `sent` 和 `received` 统计,只保留 `total` 计数,简化了统计逻辑。
- 优化了获取会话名称的方式,直接从 `chat_manager` 的 `streams` 中查找,统一了群聊和私聊的处理流程,提高了代码的可读性和效率。
- 删除了一个不再需要的测试日志。
This commit is contained in:
minecraft1024a
2025-10-04 13:14:15 +08:00
parent 346353670d
commit b4dffde3f0

View File

@@ -77,15 +77,11 @@ async def get_message_stats_by_chat(
if chat_id not in stats: if chat_id not in stats:
stats[chat_id] = { stats[chat_id] = {
"total_stats": {"sent": 0, "received": 0, "total": 0}, "total_stats": {"total": 0},
"user_stats": {} "user_stats": {}
} }
stats[chat_id]["total_stats"]["total"] += 1 stats[chat_id]["total_stats"]["total"] += 1
if user_id == bot_qq:
stats[chat_id]["total_stats"]["sent"] += 1
else:
stats[chat_id]["total_stats"]["received"] += 1
if group_by_user: if group_by_user:
if user_id not in stats[chat_id]["user_stats"]: if user_id not in stats[chat_id]["user_stats"]:
@@ -97,20 +93,18 @@ async def get_message_stats_by_chat(
stats = {chat_id: data["total_stats"] for chat_id, data in stats.items()} stats = {chat_id: data["total_stats"] for chat_id, data in stats.items()}
if format: if format:
chat_manager = get_chat_manager()
formatted_stats = {} formatted_stats = {}
for chat_id, data in stats.items(): for chat_id, data in stats.items():
# 尝试获取群聊流 stream = chat_manager.streams.get(chat_id)
logger.info(f"这是一个测试日志:{chat_id}") chat_name = "未知会话"
group_stream = chat_api.get_stream_by_group_id(chat_id) if stream:
if group_stream and group_stream.group_info: if stream.group_info and stream.group_info.group_name:
chat_name = group_stream.group_info.group_name chat_name = stream.group_info.group_name
elif stream.user_info and stream.user_info.user_nickname:
chat_name = stream.user_info.user_nickname
else: else:
# 只有当它不是一个已知的群聊时,才尝试作为私聊处理 chat_name = f"未知会话 ({chat_id})"
private_stream = chat_api.get_stream_by_user_id(chat_id)
if private_stream and private_stream.user_info:
chat_name = private_stream.user_info.user_nickname
else:
chat_name = f"未知会话 ({chat_id})"
formatted_data = { formatted_data = {
"chat_name": chat_name, "chat_name": chat_name,