diff --git a/app/core/wecomclient.py b/app/core/wecomclient.py index 39dd1e4..b9f5a1d 100644 --- a/app/core/wecomclient.py +++ b/app/core/wecomclient.py @@ -375,7 +375,12 @@ class WecomClient: except Exception as e: logger.warning(f"获取群聊详情失败: {str(e)}") - # 如果确定是外部联系人,尝试获取详情 + # 如果是内部成员,不做任何处理 + if member_type == "INTERNAL": + logger.info(f"成员 {join_user_id} 是内部成员,不做处理") + return True + + # 如果是外部联系人,获取详细信息 user_info = None member_name = None member_unionid = None @@ -389,15 +394,9 @@ class WecomClient: logger.info(f"获取到外部联系人详情: {member_name}, unionid: {member_unionid}") except Exception as e: logger.warning(f"获取外部联系人信息失败,可能是内部成员: {str(e)}") - elif member_type == "INTERNAL": - try: - user_info = await self.get_internal_user_info(join_user_id) - if user_info: - member_name = user_info.get("name") - # 内部成员没有unionid - logger.info(f"获取到内部成员详情: {member_name}") - except Exception as e: - logger.warning(f"获取内部成员信息失败: {str(e)}") + if "84061" in str(e) or "not external contact" in str(e): + logger.info(f"用户 {join_user_id} 可能是内部成员,不做处理") + return True # 如果API获取失败,则使用群聊详情中的信息 if not member_name: diff --git a/jobs.sqlite b/jobs.sqlite index 59ef3a3..4070943 100644 Binary files a/jobs.sqlite and b/jobs.sqlite differ