From b6633613db97b393c3e64d0d4ff7549d84354835 Mon Sep 17 00:00:00 2001 From: Ri-Nai Date: Sat, 18 Oct 2025 23:34:27 +0800 Subject: [PATCH] =?UTF-8?q?[refactor]=20=E6=9B=B4=E6=96=B0=20InfoUtils.get?= =?UTF-8?q?=5Fuser=5Fnickname=20=E6=96=B9=E6=B3=95=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=20config=5Fmanager=20=E5=8F=82=E6=95=B0=E4=BB=A5?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E7=BE=A4=E5=90=8D=E7=89=87=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/analysis/analyzers/golden_quote_analyzer.py | 2 +- src/analysis/analyzers/topic_analyzer.py | 4 ++-- src/analysis/statistics.py | 2 +- src/utils/info_utils.py | 8 ++++++-- src/visualization/activity_charts.py | 2 +- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/analysis/analyzers/golden_quote_analyzer.py b/src/analysis/analyzers/golden_quote_analyzer.py index 050780a..f764af8 100644 --- a/src/analysis/analyzers/golden_quote_analyzer.py +++ b/src/analysis/analyzers/golden_quote_analyzer.py @@ -148,7 +148,7 @@ class GoldenQuoteAnalyzer(BaseAnalyzer): for msg in messages: sender = msg.get("sender", {}) - nickname = InfoUtils.get_user_nickname(sender) + nickname = InfoUtils.get_user_nickname(self.config_manager, sender) msg_time = datetime.fromtimestamp(msg.get("time", 0)).strftime("%H:%M") for content in msg.get("message", []): diff --git a/src/analysis/analyzers/topic_analyzer.py b/src/analysis/analyzers/topic_analyzer.py index 50b9bef..e69400e 100644 --- a/src/analysis/analyzers/topic_analyzer.py +++ b/src/analysis/analyzers/topic_analyzer.py @@ -72,7 +72,7 @@ class TopicAnalyzer(BaseAnalyzer): logger.warning(f"build_prompt 跳过sender非字典类型的消息: {type(sender)} - {sender}") continue - nickname = InfoUtils.get_user_nickname(sender) + nickname = InfoUtils.get_user_nickname(self.config_manager, sender) msg_time = datetime.fromtimestamp(msg.get("time", 0)).strftime("%H:%M") message_list = msg.get("message", []) @@ -298,7 +298,7 @@ class TopicAnalyzer(BaseAnalyzer): logger.warning(f"extract_text_messages 跳过sender非字典类型的消息: {type(sender)} - {sender}") continue - nickname = InfoUtils.get_user_nickname(sender) + nickname = InfoUtils.get_user_nickname(self.config_manager, sender) msg_time = datetime.fromtimestamp(msg.get("time", 0)).strftime("%H:%M") for content in msg.get("message", []): diff --git a/src/analysis/statistics.py b/src/analysis/statistics.py index 9a9a9ac..dcd01b1 100644 --- a/src/analysis/statistics.py +++ b/src/analysis/statistics.py @@ -29,7 +29,7 @@ class UserAnalyzer: for msg in messages: sender = msg.get("sender", {}) user_id = str(sender.get("user_id", "")) - nickname = InfoUtils.get_user_nickname(sender) + nickname = InfoUtils.get_user_nickname(self.config_manager, sender) user_stats[user_id]["message_count"] += 1 user_stats[user_id]["nickname"] = nickname diff --git a/src/utils/info_utils.py b/src/utils/info_utils.py index 30b0405..2e63af8 100644 --- a/src/utils/info_utils.py +++ b/src/utils/info_utils.py @@ -1,9 +1,13 @@ class InfoUtils: @staticmethod - def get_user_nickname(sender) -> str: + def get_user_nickname(config_manager, sender) -> str: """ 获取用户昵称 优先使用nickname字段,如果为空则使用card(群名片)字段 """ - return sender.get("nickname", "") or sender.get("card", "") + enable_user_card = config_manager.get_enable_user_card() + if enable_user_card: + return sender.get("card", "") or sender.get("nickname", "") + else: + return sender.get("nickname", "") or sender.get("card", "") diff --git a/src/visualization/activity_charts.py b/src/visualization/activity_charts.py index 90945aa..4f2a004 100644 --- a/src/visualization/activity_charts.py +++ b/src/visualization/activity_charts.py @@ -30,7 +30,7 @@ class ActivityVisualizer: # # 用户分析 # sender = msg.get("sender", {}) # user_id = str(sender.get("user_id", "")) - # nickname = InfoUtils.get_user_nickname(sender) + # nickname = InfoUtils.get_user_nickname(self.config_manager, sender) # 统计每小时消息数 hourly_activity[hour] += 1