diff --git a/plugins/system_updater/main.py b/plugins/system_updater/main.py index 3c3f483..f33b967 100644 --- a/plugins/system_updater/main.py +++ b/plugins/system_updater/main.py @@ -11,7 +11,6 @@ from utils.robot_cmd.robot_command import Feature, PermissionStatus, GroupBotMan from wechat_ipad import WechatAPIClient - class SystemUpdaterPlugin(MessagePluginInterface): """系统更新插件""" @@ -105,30 +104,48 @@ class SystemUpdaterPlugin(MessagePluginInterface): return False @plugin_stats_decorator(plugin_name="系统更新") - @plugin_points_cost(1, "系统更新消耗积分", FEATURE_KEY) async def process_message(self, message: Dict[str, Any]) -> Tuple[bool, Optional[str]]: """处理消息""" content = str(message.get("content", "")).strip() - self.LOG.debug(f"插件执行: {self.name}:{content}") sender = message.get("sender") roomid = message.get("roomid", "") - gbm: GroupBotManager = message.get("gbm") - bot: WechatAPIClient = message.get("bot") + gbm = message.get("gbm", None) + self.bot: WechatAPIClient = message.get("bot") # 检查权限 - if roomid and gbm.get_group_permission(roomid, self.feature) == PermissionStatus.DISABLED: - return False, "没有权限" + if self.admin_wxids and sender not in self.admin_wxids: + await self.bot.send_text_message((roomid if roomid else sender), "⚠️ 您没有执行此操作的权限", + sender) + return True, "无权限" - # 检查是否是命令 - if content in self._commands: - return True, "命令已接收" + # 如果是群消息,检查群权限 + if roomid and gbm and hasattr(gbm, 'get_group_permission'): + if gbm.get_group_permission(roomid, Feature.ROBOT) == PermissionStatus.DISABLED: + return False, "机器人功能已禁用" - # 检查是否是带参数的更新命令 - for cmd in self._commands: - if content.startswith(f"{cmd} "): - return True, "带参数的命令已接收" + # 提取等待时间参数 + wait_time = self.wait_time + command = content.split(" ")[0] + + if len(content.split(" ")) > 1: + try: + param = content.split(" ")[1].strip() + if param.isdigit(): + wait_time = int(param) + self.LOG.info(f"使用自定义等待时间: {wait_time}秒") + except: + pass + + # 发送更新通知 + await self.bot.send_text_message((roomid if roomid else sender), + f"🔄 系统即将更新并重启,等待时间设置为{wait_time}秒...", + sender) + + # 执行系统更新脚本 + self._execute_system_update() + + return True, "系统更新中" - return False, "无法处理的消息" def _execute_system_update(self): """执行系统更新操作"""