[refactor] 使用 InfoUtils 提取用户昵称,简化代码

This commit is contained in:
Ri-Nai
2025-10-18 23:20:53 +08:00
parent 97a4a89021
commit 7323e1184a
6 changed files with 20 additions and 6 deletions
@@ -9,6 +9,7 @@ from astrbot.api import logger
from ...models.data_models import GoldenQuote, TokenUsage
from .base_analyzer import BaseAnalyzer
from ..utils.json_utils import extract_golden_quotes_with_regex
from ...utils import InfoUtils
@@ -147,7 +148,7 @@ class GoldenQuoteAnalyzer(BaseAnalyzer):
for msg in messages:
sender = msg.get("sender", {})
nickname = sender.get("nickname", "") or sender.get("card", "")
nickname = InfoUtils.get_user_nickname(sender)
msg_time = datetime.fromtimestamp(msg.get("time", 0)).strftime("%H:%M")
for content in msg.get("message", []):
+3 -2
View File
@@ -10,6 +10,7 @@ from astrbot.api import logger
from ...models.data_models import SummaryTopic, TokenUsage
from .base_analyzer import BaseAnalyzer
from ..utils.json_utils import extract_topics_with_regex
from ...utils import InfoUtils
class TopicAnalyzer(BaseAnalyzer):
@@ -71,7 +72,7 @@ class TopicAnalyzer(BaseAnalyzer):
logger.warning(f"build_prompt 跳过sender非字典类型的消息: {type(sender)} - {sender}")
continue
nickname = sender.get("nickname", "") or sender.get("card", "")
nickname = InfoUtils.get_user_nickname(sender)
msg_time = datetime.fromtimestamp(msg.get("time", 0)).strftime("%H:%M")
message_list = msg.get("message", [])
@@ -297,7 +298,7 @@ class TopicAnalyzer(BaseAnalyzer):
logger.warning(f"extract_text_messages 跳过sender非字典类型的消息: {type(sender)} - {sender}")
continue
nickname = sender.get("nickname", "") or sender.get("card", "")
nickname = InfoUtils.get_user_nickname(sender)
msg_time = datetime.fromtimestamp(msg.get("time", 0)).strftime("%H:%M")
for content in msg.get("message", []):
+2 -1
View File
@@ -6,6 +6,7 @@
from datetime import datetime
from typing import List, Dict
from collections import defaultdict
from ..utils import InfoUtils
class UserAnalyzer:
@@ -28,7 +29,7 @@ class UserAnalyzer:
for msg in messages:
sender = msg.get("sender", {})
user_id = str(sender.get("user_id", ""))
nickname = sender.get("nickname", "") or sender.get("card", "")
nickname = InfoUtils.get_user_nickname(sender)
user_stats[user_id]["message_count"] += 1
user_stats[user_id]["nickname"] = nickname
+3 -1
View File
@@ -5,8 +5,10 @@
from .pdf_utils import PDFInstaller
from .helpers import MessageAnalyzer
from .info_utils import InfoUtils
__all__ = [
'PDFInstaller',
'MessageAnalyzer'
'MessageAnalyzer',
'InfoUtils'
]
+9
View File
@@ -0,0 +1,9 @@
class InfoUtils:
@staticmethod
def get_user_nickname(sender) -> str:
"""
获取用户昵称
优先使用nickname字段,如果为空则使用card(群名片)字段
"""
return sender.get("nickname", "") or sender.get("card", "")
+1 -1
View File
@@ -30,7 +30,7 @@ class ActivityVisualizer:
# # 用户分析
# sender = msg.get("sender", {})
# user_id = str(sender.get("user_id", ""))
# nickname = sender.get("nickname", "") or sender.get("card", "")
# nickname = InfoUtils.get_user_nickname(sender)
# 统计每小时消息数
hourly_activity[hour] += 1