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