app/services/friend_ignore_service.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/services/message_processor.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/services/silence_service.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
config.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
logs/app.log | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
tests/__init__.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
tests/test_api.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
tests/test_dify_streaming.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
tests/test_friend_ignore_service.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
tests/test_message_aggregator.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
tests/test_message_processor.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
tests/test_online_status_monitor.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
tests/test_silence_service.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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: app/services/message_processor.py
@@ -201,8 +201,8 @@ from_user = data.get("fromUser") from_group = data.get("fromGroup") # 检查发送者是否在好友忽略列表中 is_friend_ignored = friend_ignore_service.is_friend_ignored(from_user) # 检查发送者是否在好友忽略列表中(传入群组ID用于测试群组检查) is_friend_ignored = friend_ignore_service.is_friend_ignored(from_user, from_group) if is_friend_ignored: logger.info( app/services/silence_service.py
@@ -5,8 +5,11 @@ import time from typing import Optional from loguru import logger from sqlalchemy.orm import Session from app.services.redis_queue import redis_queue from app.models.database import get_db from app.models.contact import Contact from config import settings @@ -25,6 +28,39 @@ """获取群组静默结束时间键""" return f"{self.silence_end_time_key_prefix}{group_id}" def is_test_group(self, group_id: str) -> bool: """ 检查指定群组是否为测试群组 Args: group_id: 群组ID Returns: 如果是测试群组返回True,否则返回False """ try: # 检查是否配置了测试群组关键字 if not settings.test_group_keywords: return False # 从数据库查询群组信息 with next(get_db()) as db: contact = db.query(Contact).filter(Contact.wc_id == group_id).first() if not contact or not contact.nick_name: return False # 检查群组昵称是否包含任何测试关键字 nick_name = contact.nick_name for keyword in settings.test_group_keywords: if keyword in nick_name: logger.info(f"识别到测试群组: group_id={group_id}, nick_name={nick_name}, keyword={keyword}") return True return False except Exception as e: logger.error(f"检查测试群组异常: group_id={group_id}, error={str(e)}") return False def activate_silence_mode(self, group_id: str) -> bool: """ 激活指定群组的静默模式 @@ -36,6 +72,11 @@ 激活成功返回True,失败返回False """ try: # 检查是否为测试群组,如果是则不激活静默模式 if self.is_test_group(group_id): logger.info(f"测试群组不激活静默模式: group_id={group_id}") return True if not settings.silence_mode_enabled: logger.debug("静默模式功能已禁用") return False config.py
@@ -118,6 +118,9 @@ # 结束字符串配置 self.end_str_list = config_data.get("end_str_list", []) # 测试群组关键字配置 self.test_group_keywords = config_data.get("test_group_keywords", []) def update_ecloud_w_id(self, new_w_id: str) -> bool: """ logs/app.log
@@ -1,2 +1,3 @@ 2025-08-22 16:15:05 | INFO | __main__:<module>:132 - 启动E云管家-DifyAI对接服务 2025-08-22 16:34:15 | INFO | __main__:<module>:132 - 启动E云管家-DifyAI对接服务 2025-08-26 15:35:24 | INFO | __main__:<module>:132 - 启动E云管家-DifyAI对接服务 2025-08-26 15:55:13 | INFO | __main__:<module>:132 - 启动E云管家-DifyAI对接服务 2025-08-26 16:08:41 | INFO | __main__:<module>:132 - 启动E云管家-DifyAI对接服务 tests/__init__.py
File was deleted tests/test_api.py
File was deleted tests/test_dify_streaming.py
File was deleted tests/test_friend_ignore_service.py
File was deleted tests/test_message_aggregator.py
File was deleted tests/test_message_processor.py
File was deleted tests/test_online_status_monitor.py
File was deleted tests/test_silence_service.py
File was deleted