From 18c6d2b0dd77b38f487747aad1fcd1218aa8c356 Mon Sep 17 00:00:00 2001
From: yj <2077506045@qq.com>
Date: 星期三, 27 八月 2025 09:19:57 +0800
Subject: [PATCH] 1. 新增测试群组关键字,测试群组名称包含关键字,在其中发言一律不触发静默。

---
 app/services/silence_service.py |   41 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 41 insertions(+), 0 deletions(-)

diff --git a/app/services/silence_service.py b/app/services/silence_service.py
index 0161198..10727ae 100644
--- a/app/services/silence_service.py
+++ b/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:
+            濡傛灉鏄祴璇曠兢缁勮繑鍥濼rue锛屽惁鍒欒繑鍥濬alse
+        """
+        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 @@
             婵�娲绘垚鍔熻繑鍥濼rue锛屽け璐ヨ繑鍥濬alse
         """
         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

--
Gitblit v1.9.1