app/services/friend_ignore_service.py
@@ -8,6 +8,7 @@
from app.services.redis_queue import redis_queue
from app.models.database import get_db
from app.models.contact import Contact
from app.services.silence_service import silence_service
from config import settings
@@ -84,18 +85,20 @@
            logger.error(f"添加好友到忽略列表异常: error={str(e)}")
            return False
    def is_friend_ignored(self, w_id: str) -> bool:
    def is_friend_ignored(self, w_id: str, group_id: Optional[str] = None) -> bool:
        """
        检查指定w_id是否应该被忽略
        逻辑:
        1. 如果好友忽略功能未启用,返回False(不忽略)
        2. 如果w_id在白名单中,返回False(不忽略)
        3. 如果w_id在忽略列表中,返回True(忽略)
        4. 如果w_id不在忽略列表中,返回False(不忽略)
        3. 如果w_id在忽略列表中,但所在群组为测试群组,返回False(不忽略)
        4. 如果w_id在忽略列表中,返回True(忽略)
        5. 如果w_id不在忽略列表中,返回False(不忽略)
        Args:
            w_id: 用户w_id
            group_id: 群组ID(可选),用于检查是否为测试群组
        Returns:
            如果应该被忽略返回True,否则返回False
@@ -116,8 +119,13 @@
            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}")
                    return False
                logger.info(f"w_id在忽略列表中,忽略消息: w_id={w_id}")
            return is_in_ignore_list
        except Exception as e: