11
This commit is contained in:
+11
-16
@@ -1,23 +1,21 @@
|
|||||||
{
|
{
|
||||||
"jx3_kfjk_en": {
|
"kfjk": {
|
||||||
"description": "开服监控功能",
|
"description": "开服监控配置",
|
||||||
|
"type": "object",
|
||||||
|
"items": {
|
||||||
|
"enable": {
|
||||||
|
"description": "开服监控功能开关",
|
||||||
"type": "bool",
|
"type": "bool",
|
||||||
"default": true,
|
"default": true,
|
||||||
"hint": "是否启用剑网三开服监控功能。"
|
"hint": "是否启用剑网三开服监控功能。"
|
||||||
},
|
},
|
||||||
"jx3_kfjk_time": {
|
"time": {
|
||||||
"description": "开服监控循环时间",
|
"description": "开服监控循环时间",
|
||||||
"type": "int",
|
"type": "int",
|
||||||
"default": 10,
|
"default": 10,
|
||||||
"hint": "请求服务器状态的循环时间,单位秒。"
|
"hint": "请求服务器状态的循环时间,单位秒。"
|
||||||
},
|
},
|
||||||
"jx3_kfjk_server": {
|
"umos": {
|
||||||
"description": "开服监控服务器",
|
|
||||||
"type": "string",
|
|
||||||
"default": "梦江南",
|
|
||||||
"hint": "请求服务器状态的名称,要官方名称。"
|
|
||||||
},
|
|
||||||
"jx3_kfjk_list": {
|
|
||||||
"description": "开服监控推送列表",
|
"description": "开服监控推送列表",
|
||||||
"type": "list",
|
"type": "list",
|
||||||
"hint": "可以填写多个会话唯一ID。",
|
"hint": "可以填写多个会话唯一ID。",
|
||||||
@@ -26,11 +24,8 @@
|
|||||||
"description": "会话唯一ID"
|
"description": "会话唯一ID"
|
||||||
},
|
},
|
||||||
"default": ["default:GroupMessage:768280021","default:GroupMessage:690665795"]
|
"default": ["default:GroupMessage:768280021","default:GroupMessage:690665795"]
|
||||||
},
|
|
||||||
"jx3_kfjk_test": {
|
|
||||||
"description": "开服监控功能测试",
|
|
||||||
"type": "bool",
|
|
||||||
"default": false,
|
|
||||||
"hint": "可以手动修改服务器的状态,进行推送测试。"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+22
-14
@@ -31,32 +31,40 @@ class AsyncTask:
|
|||||||
async def cycle_kaifjiankong(self):
|
async def cycle_kaifjiankong(self):
|
||||||
"""开服监控后台程序"""
|
"""开服监控后台程序"""
|
||||||
# 获取配置信息
|
# 获取配置信息
|
||||||
|
conf = self.conf.get("kfjk", {})
|
||||||
time_int = self.conf.get("jx3_kfjk_time", 10)
|
self.kfjk_conf = {
|
||||||
self.kfjk_en = self.conf.get("jx3_kfjk_en", True)
|
"enable": conf.get("enable", True),
|
||||||
self.kfjk_umos = self.conf.get("jx3_kfjk_list", [])
|
"time": conf.get("time", 10),
|
||||||
kfjk_test = self.conf.get("jx3_kfjk_test", False)
|
"umos": conf.get("umos", []),
|
||||||
|
}
|
||||||
|
|
||||||
self.kfjk_server_state = True # 上一次查询的状态
|
self.kfjk_server_state = True # 上一次查询的状态
|
||||||
self.kfjk_server_state_new = False # 最新查询的状态
|
self.kfjk_server_state_new = False # 最新查询的状态
|
||||||
|
|
||||||
if self.kfjk_en:
|
if self.kfjk_conf["enable"]:
|
||||||
logger.info(f"开服监控功能开启")
|
logger.info(f"开服监控功能开启")
|
||||||
while self.kfjk_en:
|
while self.kfjk_conf["enable"]:
|
||||||
|
# 获取最新服务状态
|
||||||
data = await self.jx3fun.kaifu("梦江南")
|
data = await self.jx3fun.kaifu("梦江南")
|
||||||
if kfjk_test:
|
|
||||||
self.kfjk_server_state_new = False
|
|
||||||
else:
|
|
||||||
self.kfjk_server_state_new = data["status"]
|
self.kfjk_server_state_new = data["status"]
|
||||||
# logger.info(f"开服监控功能循环中,上次询问服务器状态{self.kfjk_server_state},本次询问的服务器状态{self.kfjk_server_state_new}")
|
# 判断状态是否变化
|
||||||
if self.kfjk_server_state != self.kfjk_server_state_new:
|
if self.kfjk_server_state != self.kfjk_server_state_new:
|
||||||
logger.info(f"开服监控功能循环中,上次询问服务器状态{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:
|
if self.kfjk_server_state and not self.kfjk_server_state_new:
|
||||||
message_chain = MessageChain().message("剑网三服务器已关闭\n休息一会把,开服了喊你!")
|
message_chain = MessageChain().message("剑网三服务器已关闭\n休息一会把,开服了喊你!")
|
||||||
if self.kfjk_server_state_new and not self.kfjk_server_state:
|
if self.kfjk_server_state_new and not self.kfjk_server_state:
|
||||||
message_chain = MessageChain().message("剑网三服务器已开启\n快冲!快冲!")
|
message_chain = MessageChain().message("剑网三服务器已开启\n快冲!快冲!")
|
||||||
if self.kfjk_umos:
|
if self.kfjk_conf["umos"]:
|
||||||
for umo in self.kfjk_umos:
|
for umo in self.kfjk_conf["umos"]:
|
||||||
await self.context.send_message(umo, message_chain)
|
await self.context.send_message(umo, message_chain)
|
||||||
self.kfjk_server_state = self.kfjk_server_state_new
|
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
|
||||||
@@ -59,6 +59,7 @@ class Jx3ApiPlugin(Star):
|
|||||||
self.at = AsyncTask(self.context, self.conf, self.jx3fun)
|
self.at = AsyncTask(self.context, self.conf, self.jx3fun)
|
||||||
# 周期函数调用
|
# 周期函数调用
|
||||||
self.kf_task = asyncio.create_task(self.at.cycle_kaifjiankong())
|
self.kf_task = asyncio.create_task(self.at.cycle_kaifjiankong())
|
||||||
|
|
||||||
logger.info("jx3api异步插件初始化完成")
|
logger.info("jx3api异步插件初始化完成")
|
||||||
|
|
||||||
|
|
||||||
@@ -242,24 +243,11 @@ class Jx3ApiPlugin(Star):
|
|||||||
|
|
||||||
|
|
||||||
@jx3.command("开服监控")
|
@jx3.command("开服监控")
|
||||||
async def jx3_kaifhujiank(self, event: AstrMessageEvent,en: str = "状态"):
|
async def jx3_kaifhujiank(self, event: AstrMessageEvent):
|
||||||
"""剑三 开服监控"""
|
"""剑三 开服监控"""
|
||||||
if en == "开启":
|
return_msg = await self.at.get_kfjk_conf()
|
||||||
umo_set = set(self.kfjk_umos)
|
yield event.plain_result(return_msg)
|
||||||
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("开服监控指令错误,请输入 开启/关闭")
|
|
||||||
|
|
||||||
|
|
||||||
@filter.permission_type(filter.PermissionType.ADMIN)
|
@filter.permission_type(filter.PermissionType.ADMIN)
|
||||||
|
|||||||
Reference in New Issue
Block a user