feat(群级配置): 新增MySQL+Redis持久缓存并接入进群欢迎差异化配置

新增群级插件配置表与服务层,采用MySQL持久化+Redis长期缓存(TTL=-1);后台新增群级插件配置管理页面与API,支持按群按插件维护JSON配置并在修改后同步回填MySQL和刷新Redis;已将群成员变更监控插件接入该配置,支持欢迎文案与卡片URL等按群差异化。
This commit is contained in:
liuwei
2026-04-20 10:42:46 +08:00
parent 6cf90c02e5
commit d4b7cb32f6
8 changed files with 650 additions and 6 deletions

View File

@@ -17,10 +17,12 @@ from base.plugin_common.plugin_registry import PluginRegistry
from configuration import Config
from db.connection import DBConnectionManager
from db.contacts_db import ContactsDBOperator
from db.group_plugin_config_db import GroupPluginConfigDBOperator
from db.plugin_schedule_db import PluginScheduleDBOperator
from db.system_job_db import SystemJobDBOperator
from utils.system_jobs import SystemJobLoader
from utils.email_util import EmailSender
from utils.group_plugin_config_service import GroupPluginConfigService
from utils.plugin_schedule_manager import PluginScheduleManager
from utils.revoke.message_auto_revoke import MessageAutoRevoke
from utils.robot_cmd.robot_command import GroupBotManager, Feature, PermissionStatus
@@ -68,8 +70,14 @@ class Robot:
self.redis_pool = self.db_manager.redis_pool
self.contacts_db = ContactsDBOperator(self.db_manager)
self.group_plugin_config_db = GroupPluginConfigDBOperator(self.db_manager)
self.plugin_schedule_db = PluginScheduleDBOperator(self.db_manager)
self.system_job_db = SystemJobDBOperator(self.db_manager)
self.group_plugin_config_db.init_tables()
self.group_plugin_config_service = GroupPluginConfigService(
db_operator=self.group_plugin_config_db,
redis_client=self.db_manager.get_redis_connection(),
)
# 初始化联系人管理器
self.contact_manager = ContactManager.get_instance()
self.allContacts = {} # 将在登录后填充
@@ -89,7 +97,8 @@ class Robot:
"plugin_registry": self.plugin_registry,
"db_manager": self.db_manager,
"db_pool": self.db_pool,
"redis_pool": self.redis_pool
"redis_pool": self.redis_pool,
"group_plugin_config_service": self.group_plugin_config_service,
}
self.plugin_manager = PluginManager(plugin_dir=getattr(self.config, "plugin_dir", "plugins"))