From ea5fb0d77d2872f3786c5a220ac6be102c750d6e Mon Sep 17 00:00:00 2001 From: Bakadax Date: Sat, 3 May 2025 13:08:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4try=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=EF=BC=8C=E4=BD=BF=E7=94=A8isdigit=E6=A3=80?= =?UTF-8?q?=E6=9F=A5user=5Fid=5Fstr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/group_nickname/nickname_mapper.py | 8 ++++---- .../group_nickname/nickname_processor.py | 19 +++++++++---------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/plugins/group_nickname/nickname_mapper.py b/src/plugins/group_nickname/nickname_mapper.py index e3e47d66..89238930 100644 --- a/src/plugins/group_nickname/nickname_mapper.py +++ b/src/plugins/group_nickname/nickname_mapper.py @@ -179,10 +179,10 @@ async def analyze_chat_for_nicknames( except json.JSONDecodeError as json_err: logger.error(f"解析 LLM 响应 JSON 失败: {json_err}\n原始响应: {response_content}") return {"is_exist": False} - except AttributeError as attr_err: - # 这个理论上不应该发生,因为在调用 get 前检查了 result 是否是 dict - logger.error(f"处理 LLM 响应时发生属性错误 (可能尝试在非字典对象上使用 .get): {attr_err}\n原始响应: {response_content}") - return {"is_exist": False} + # except AttributeError as attr_err: + # # 这个理论上不应该发生,因为在调用 get 前检查了 result 是否是 dict + # logger.error(f"处理 LLM 响应时发生属性错误 (可能尝试在非字典对象上使用 .get): {attr_err}\n原始响应: {response_content}") + # return {"is_exist": False} except Exception as e: # 捕获其他所有未预料到的异常 logger.error(f"绰号映射 LLM 调用或处理过程中发生未预料的错误: {e}", exc_info=True) diff --git a/src/plugins/group_nickname/nickname_processor.py b/src/plugins/group_nickname/nickname_processor.py index f765cb9b..a73811bb 100644 --- a/src/plugins/group_nickname/nickname_processor.py +++ b/src/plugins/group_nickname/nickname_processor.py @@ -9,6 +9,7 @@ from src.common.logger_manager import get_logger from src.common.database import db # 使用全局 db from .nickname_mapper import analyze_chat_for_nicknames from src.config.config import global_config +from ..person_info.person_info import person_info_manager logger = get_logger("nickname_processor") @@ -145,12 +146,6 @@ async def update_nickname_counts(platform: str, group_id: str, nickname_map: Dic group_id (str): 群组 ID。 nickname_map (Dict[str, str]): 用户 ID (字符串) 到绰号的映射。 """ - try: - from ..person_info.person_info import person_info_manager - except ImportError: - logger.error("无法导入 person_info_manager,无法生成 person_id!") - return - person_info_collection = db.person_info if not nickname_map: logger.debug("提供的用于更新的绰号映射为空。") @@ -164,11 +159,15 @@ async def update_nickname_counts(platform: str, group_id: str, nickname_map: Dic logger.warning(f"跳过无效条目: user_id='{user_id_str}', nickname='{nickname}'") continue group_id_str = str(group_id) - try: - user_id_int = int(user_id_str) - except ValueError: - logger.warning(f"无效的用户ID格式: '{user_id_str}',跳过。") + + # 使用 isdigit() 检查 user_id_str 是否为纯数字字符串 + if not user_id_str.isdigit(): + # isdigit() 会对空字符串返回 False,并且不识别负号、小数点等 + logger.warning(f"无效的用户ID格式 (非纯数字): '{user_id_str}',跳过。") continue + + user_id_int = int(user_id_str) + # --- 结束验证 --- try: