yj
2025-08-27 307236190c98c13395b114df990eec50a9160251
app/services/friend_ignore_service.py
@@ -30,9 +30,14 @@
        """
        try:
            with next(get_db()) as db:
                contact = db.query(Contact).filter(Contact.nick_name == nickname).first()
                contact = (
                    db.query(Contact).filter(Contact.nick_name == nickname).first()
                )
                if contact:
                    return contact.wc_id
                    wc_id = contact.wc_id
                    if contact.work_wc_id:
                        wc_id += f",{contact.work_wc_id}"
                    return wc_id
                else:
                    logger.warning(f"未找到昵称为 '{nickname}' 的联系人")
                    return None
@@ -111,17 +116,22 @@
            # 检查是否在白名单中(通过昵称)
            whitelist_wids = self._get_whitelist_wids()
            if w_id in whitelist_wids:
            if any(w_id in wids for wids in whitelist_wids):
                logger.info(f"w_id在白名单中,不忽略消息: w_id={w_id}")
                return False
            # 检查是否在忽略列表中
            is_in_ignore_list = redis_queue.redis_client.sismember(self.ignore_list_key, w_id)
            is_in_ignore_list = redis_queue.redis_client.sismember(
                self.ignore_list_key, w_id
            )
            if is_in_ignore_list:
                # 如果在忽略列表中,检查是否在测试群组中
                if group_id and silence_service.is_test_group(group_id):
                    logger.info(f"测试群组中的好友消息不被忽略: w_id={w_id}, group_id={group_id}")
                    logger.info(
                        f"测试群组中的好友消息不被忽略: w_id={w_id}, group_id={group_id}"
                    )
                    return False
                
                logger.info(f"w_id在忽略列表中,忽略消息: w_id={w_id}")
@@ -233,7 +243,7 @@
                "in_ignore_list": False,
                "final_ignored": False,
                "reason": "",
                "whitelist_nicknames": settings.friend_ignore_whitelist
                "whitelist_nicknames": settings.friend_ignore_whitelist,
            }
            if not settings.friend_ignore_enabled:
@@ -244,7 +254,9 @@
                info["reason"] = "在白名单中,不会被忽略"
                return info
            info["in_ignore_list"] = redis_queue.redis_client.sismember(self.ignore_list_key, w_id)
            info["in_ignore_list"] = redis_queue.redis_client.sismember(
                self.ignore_list_key, w_id
            )
            if info["in_ignore_list"]:
                info["final_ignored"] = True
@@ -256,11 +268,7 @@
        except Exception as e:
            logger.error(f"获取忽略状态信息异常: w_id={w_id}, error={str(e)}")
            return {
                "w_id": w_id,
                "error": str(e),
                "final_ignored": False
            }
            return {"w_id": w_id, "error": str(e), "final_ignored": False}
# 全局好友忽略服务实例