diff --git a/_conf_schema.json b/_conf_schema.json index 44e29de..7731b6e 100644 --- a/_conf_schema.json +++ b/_conf_schema.json @@ -1,36 +1,31 @@ { - "jx3_kfjk_en": { - "description": "开服监控功能", - "type": "bool", - "default": true, - "hint": "是否启用剑网三开服监控功能。" - }, - "jx3_kfjk_time": { - "description": "开服监控循环时间", - "type": "int", - "default": 10, - "hint": "请求服务器状态的循环时间,单位秒。" - }, - "jx3_kfjk_server": { - "description": "开服监控服务器", - "type": "string", - "default": "梦江南", - "hint": "请求服务器状态的名称,要官方名称。" - }, - "jx3_kfjk_list": { - "description": "开服监控推送列表", - "type": "list", - "hint": "可以填写多个会话唯一ID。", + "kfjk": { + "description": "开服监控配置", + "type": "object", "items": { - "type": "string", - "description": "会话唯一ID" - }, - "default": ["default:GroupMessage:768280021","default:GroupMessage:690665795"] - }, - "jx3_kfjk_test": { - "description": "开服监控功能测试", - "type": "bool", - "default": false, - "hint": "可以手动修改服务器的状态,进行推送测试。" + "enable": { + "description": "开服监控功能开关", + "type": "bool", + "default": true, + "hint": "是否启用剑网三开服监控功能。" + }, + "time": { + "description": "开服监控循环时间", + "type": "int", + "default": 10, + "hint": "请求服务器状态的循环时间,单位秒。" + }, + "umos": { + "description": "开服监控推送列表", + "type": "list", + "hint": "可以填写多个会话唯一ID。", + "items": { + "type": "string", + "description": "会话唯一ID" + }, + "default": ["default:GroupMessage:768280021","default:GroupMessage:690665795"] + } + } } + } \ No newline at end of file diff --git a/core/async_task.py b/core/async_task.py index 8d197fc..0cd0a69 100644 --- a/core/async_task.py +++ b/core/async_task.py @@ -31,32 +31,40 @@ class AsyncTask: async def cycle_kaifjiankong(self): """开服监控后台程序""" # 获取配置信息 - - time_int = self.conf.get("jx3_kfjk_time", 10) - self.kfjk_en = self.conf.get("jx3_kfjk_en", True) - self.kfjk_umos = self.conf.get("jx3_kfjk_list", []) - kfjk_test = self.conf.get("jx3_kfjk_test", False) + conf = self.conf.get("kfjk", {}) + self.kfjk_conf = { + "enable": conf.get("enable", True), + "time": conf.get("time", 10), + "umos": conf.get("umos", []), + } self.kfjk_server_state = True # 上一次查询的状态 self.kfjk_server_state_new = False # 最新查询的状态 - if self.kfjk_en: + if self.kfjk_conf["enable"]: logger.info(f"开服监控功能开启") - while self.kfjk_en: + while self.kfjk_conf["enable"]: + # 获取最新服务状态 data = await self.jx3fun.kaifu("梦江南") - if kfjk_test: - self.kfjk_server_state_new = False - else: - self.kfjk_server_state_new = data["status"] - # logger.info(f"开服监控功能循环中,上次询问服务器状态{self.kfjk_server_state},本次询问的服务器状态{self.kfjk_server_state_new}") + self.kfjk_server_state_new = data["status"] + # 判断状态是否变化 if self.kfjk_server_state != self.kfjk_server_state_new: logger.info(f"开服监控功能循环中,上次询问服务器状态{self.kfjk_server_state},本次询问的服务器状态{self.kfjk_server_state_new}") if self.kfjk_server_state and not self.kfjk_server_state_new: message_chain = MessageChain().message("剑网三服务器已关闭\n休息一会把,开服了喊你!") if self.kfjk_server_state_new and not self.kfjk_server_state: message_chain = MessageChain().message("剑网三服务器已开启\n快冲!快冲!") - if self.kfjk_umos: - for umo in self.kfjk_umos: + if self.kfjk_conf["umos"]: + for umo in self.kfjk_conf["umos"]: await self.context.send_message(umo, message_chain) self.kfjk_server_state = self.kfjk_server_state_new - await asyncio.sleep(time_int) + await asyncio.sleep(self.kfjk_conf["time"]) # 休眠指定时间(分钟) + + async def get_kfjk_conf(self) -> str: + """获取开服监控配置信息""" + return_msg = f"开服监控后台状态:{self.kfjk_conf['enable']}\n" + return_msg += f"周期询问时间:{self.kfjk_conf['time']}秒\n" + return_msg += f"上次询问服务器状态{self.kfjk_server_state}\n" + return_msg += f"本次询问的服务器状态{self.kfjk_server_state_new}\n" + return_msg += f"推送会话列表:\n{self.kfjk_conf['umos']}" + return return_msg \ No newline at end of file diff --git a/main.py b/main.py index ea5cf44..47d7901 100644 --- a/main.py +++ b/main.py @@ -59,6 +59,7 @@ class Jx3ApiPlugin(Star): self.at = AsyncTask(self.context, self.conf, self.jx3fun) # 周期函数调用 self.kf_task = asyncio.create_task(self.at.cycle_kaifjiankong()) + logger.info("jx3api异步插件初始化完成") @@ -242,24 +243,11 @@ class Jx3ApiPlugin(Star): @jx3.command("开服监控") - async def jx3_kaifhujiank(self, event: AstrMessageEvent,en: str = "状态"): + async def jx3_kaifhujiank(self, event: AstrMessageEvent): """剑三 开服监控""" - if en == "开启": - umo_set = set(self.kfjk_umos) - umo_set.add(event.unified_msg_origin) - self.kfjk_umos = list(umo_set) - yield event.plain_result(f"开服监控已开启") - elif en =="关闭": - try: - self.kfjk_umos.remove(event.unified_msg_origin) - yield event.plain_result(f"开服监控已关闭") - except ValueError as e: - yield event.plain_result(f"开服监控已关闭") - elif en == "状态": - #yield event.plain_result(f"开服监控后台状态:{self.kfjk_en}\n监控服务器:{self.kfjk_servername}\n上次询问服务器状态{self.kfjk_server_state}\n本次询问的服务器状态{self.kfjk_server_state_new}\n推送会话列表:\n{self.kfjk_umos}") - yield event.plain_result(f"开服监控后台状态:") - else: - yield event.plain_result("开服监控指令错误,请输入 开启/关闭") + return_msg = await self.at.get_kfjk_conf() + yield event.plain_result(return_msg) + @filter.permission_type(filter.PermissionType.ADMIN)