111
This commit is contained in:
+30
-2
@@ -33,9 +33,37 @@
|
|||||||
"hint": "可以填写多个会话唯一ID。",
|
"hint": "可以填写多个会话唯一ID。",
|
||||||
"items": {
|
"items": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "会话唯一ID"
|
"description": "会话唯一ID,可通过/std获取"
|
||||||
},
|
},
|
||||||
"default": ["QQ:GroupMessage:768280021","QQ:GroupMessage:690665795"]
|
"default": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"xwzx": {
|
||||||
|
"description": "新闻资讯推送",
|
||||||
|
"type": "object",
|
||||||
|
"items": {
|
||||||
|
"enable": {
|
||||||
|
"description": "新闻资讯推送功能开关",
|
||||||
|
"type": "bool",
|
||||||
|
"default": false,
|
||||||
|
"hint": "是否启用剑网三开新闻资讯推送功能。"
|
||||||
|
},
|
||||||
|
"time": {
|
||||||
|
"description": "获取最新资讯循环时间",
|
||||||
|
"type": "int",
|
||||||
|
"default": 280,
|
||||||
|
"hint": "请求最新资讯的循环时间,单位秒。"
|
||||||
|
},
|
||||||
|
"umos": {
|
||||||
|
"description": "推送列表",
|
||||||
|
"type": "list",
|
||||||
|
"hint": "可以填写多个会话唯一ID。",
|
||||||
|
"items": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "会话唯一ID,可通过/std获取"
|
||||||
|
},
|
||||||
|
"default": []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+68
-14
@@ -85,8 +85,13 @@ class AsyncTask:
|
|||||||
"time": conf.get("time", 10),
|
"time": conf.get("time", 10),
|
||||||
"umos": conf.get("umos", []),
|
"umos": conf.get("umos", []),
|
||||||
}
|
}
|
||||||
|
# 状态记录
|
||||||
|
self.kfjk = {
|
||||||
|
"state": False,
|
||||||
|
"state_new": False
|
||||||
|
}
|
||||||
try:
|
try:
|
||||||
self.kfjk_server_state = await self.get_local_data("kfjk") # 上一次查询的状态
|
self.kfjk["state"] = await self.get_local_data("kfjk") # 上一次查询的状态
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"获取本地缓存数据失败: {e}")
|
logger.error(f"获取本地缓存数据失败: {e}")
|
||||||
|
|
||||||
@@ -95,39 +100,88 @@ class AsyncTask:
|
|||||||
else:
|
else:
|
||||||
logger.info(f"开服监控功能关闭")
|
logger.info(f"开服监控功能关闭")
|
||||||
return
|
return
|
||||||
|
|
||||||
while self.kfjk_conf["enable"]:
|
while self.kfjk_conf["enable"]:
|
||||||
try:
|
try:
|
||||||
# 获取最新服务状态
|
# 获取最新服务状态
|
||||||
data = await self.jx3fun.kaifu("梦江南")
|
data = await self.jx3fun.kaifu("梦江南")
|
||||||
self.kfjk_server_state_new = data["status"]
|
self.kfjk["state_new"] = data["status"]
|
||||||
logger.debug(f"开服监控功能循环中,上次询问服务器状态{self.kfjk_server_state},本次询问的服务器状态{self.kfjk_server_state_new}")
|
logger.debug(f"开服监控功能循环中,上次询问服务器状态{self.kfjk['state']},本次询问的服务器状态{self.kfjk['state_new']}")
|
||||||
# 判断状态是否变化
|
# 判断状态是否变化
|
||||||
if self.kfjk_server_state != self.kfjk_server_state_new:
|
if self.kfjk["state"] != self.kfjk["state_new"]:
|
||||||
logger.info(f"开服监控功能循环中,上次询问服务器状态{self.kfjk_server_state},本次询问的服务器状态{self.kfjk_server_state_new}")
|
logger.info(f"开服监控功能循环中,上次询问服务器状态{self.kfjk['state']},本次询问的服务器状态{self.kfjk['state_new']}")
|
||||||
# 构建不同的推送小时
|
# 构建不同的推送小时
|
||||||
if self.kfjk_server_state and not self.kfjk_server_state_new:
|
message_chain = MessageChain().message(data.get("data"))
|
||||||
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_conf["umos"]:
|
if self.kfjk_conf["umos"]:
|
||||||
for umo in self.kfjk_conf["umos"]:
|
for umo in self.kfjk_conf["umos"]:
|
||||||
await self.context.send_message(umo, message_chain)
|
await self.context.send_message(umo, message_chain)
|
||||||
|
|
||||||
await self.set_local_data("kfjk", self.kfjk_server_state_new)
|
await self.set_local_data("kfjk", self.kfjk["state_new"])
|
||||||
|
|
||||||
self.kfjk_server_state = self.kfjk_server_state_new
|
self.kfjk["state"] = self.kfjk["state_new"]
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"开服监控循环异常: {e}")
|
logger.error(f"开服监控循环异常: {e}")
|
||||||
await asyncio.sleep(self.kfjk_conf["time"]) # 休眠指定时间
|
await asyncio.sleep(self.kfjk_conf["time"])
|
||||||
|
|
||||||
|
|
||||||
async def get_kfjk_conf(self) -> str:
|
async def get_kfjk_conf(self) -> str:
|
||||||
"""获取开服监控配置信息"""
|
"""获取开服监控配置信息"""
|
||||||
return_msg = f"开服监控后台状态:{self.kfjk_conf['enable']}\n"
|
return_msg = f"开服监控后台状态:{self.kfjk_conf['enable']}\n"
|
||||||
return_msg += f"周期询问时间:{self.kfjk_conf['time']}秒\n"
|
return_msg += f"周期询问时间:{self.kfjk_conf['time']}秒\n"
|
||||||
return_msg += f"上次询问服务器状态{self.kfjk_server_state}\n"
|
return_msg += f"上次询问服务器状态{self.kfjk['state']}\n"
|
||||||
return_msg += f"本次询问的服务器状态{self.kfjk_server_state_new}\n"
|
return_msg += f"本次询问的服务器状态{self.kfjk['state_new']}\n"
|
||||||
return_msg += f"推送会话列表:\n{self.kfjk_conf['umos']}"
|
return_msg += f"推送会话列表:\n{self.kfjk_conf['umos']}"
|
||||||
return return_msg
|
return return_msg
|
||||||
|
|
||||||
|
|
||||||
|
async def cycle_xwzx(self):
|
||||||
|
"""最新新闻资讯后台程序"""
|
||||||
|
# 获取配置信息
|
||||||
|
conf = self.conf.get("xwzx", {})
|
||||||
|
self.xwzx_conf = {
|
||||||
|
"enable": conf.get("enable", True),
|
||||||
|
"time": conf.get("time", 280),
|
||||||
|
"umos": conf.get("umos", []),
|
||||||
|
}
|
||||||
|
# 状态记录
|
||||||
|
self.xwzx = {
|
||||||
|
"state": 0,
|
||||||
|
"state_new": 0
|
||||||
|
}
|
||||||
|
|
||||||
|
try:
|
||||||
|
self.xwzx["state"] = await self.get_local_data("xwzx") # 上一次查询的状态
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"获取本地缓存数据失败: {e}")
|
||||||
|
|
||||||
|
if self.xwzx_conf["enable"]:
|
||||||
|
logger.info(f"新闻资讯推送功能开启")
|
||||||
|
else:
|
||||||
|
logger.info(f"新闻资讯推送功能关闭")
|
||||||
|
return
|
||||||
|
|
||||||
|
while self.xwzx_conf["enable"]:
|
||||||
|
try:
|
||||||
|
# 获取最新服务状态
|
||||||
|
data = await self.jx3fun.xinwei()
|
||||||
|
self.xwzx["state_new"] = data["status"]
|
||||||
|
logger.debug(f"新闻资讯推送功能循环中,上次最新资讯ID{self.xwzx['state']},本次最新资讯ID{self.xwzx['state_new']}")
|
||||||
|
# 判断状态是否变化
|
||||||
|
if self.xwzx["state"] != self.xwzx["state_new"]:
|
||||||
|
logger.info(f"新闻资讯推送功能循环中,上次最新资讯ID{self.xwzx['state']},本次最新资讯ID{self.xwzx['state_new']}")
|
||||||
|
# 构建不同的推送小时
|
||||||
|
message_chain = MessageChain().message(data.get("data"))
|
||||||
|
# 推送消息
|
||||||
|
if self.xwzx_conf["umos"]:
|
||||||
|
for umo in self.xwzx_conf["umos"]:
|
||||||
|
await self.context.send_message(umo, message_chain)
|
||||||
|
|
||||||
|
await self.set_local_data("xwzx", self.xwzx["state_new"])
|
||||||
|
|
||||||
|
self.xwzx["state"] = self.xwzx["state_new"]
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"开服监控循环异常: {e}")
|
||||||
|
await asyncio.sleep(self.xwzx_conf["time"])
|
||||||
+8
-4
@@ -255,19 +255,23 @@ class JX3Service:
|
|||||||
return_data = self._init_return_data()
|
return_data = self._init_return_data()
|
||||||
|
|
||||||
# 提取字段可能返回列表
|
# 提取字段可能返回列表
|
||||||
data: Optional[List[Dict[str, Any]]] = await self._base_request("jx3_jigai", "GET")
|
data: Optional[List[Dict[str, Any]]] = await self._base_request("jx3_xinweng", "GET")
|
||||||
|
|
||||||
if not data or not isinstance(data, list):
|
if not data or not isinstance(data, list):
|
||||||
return_data["msg"] = "获取接口信息失败或数据格式错误"
|
return_data["msg"] = "获取接口信息失败或数据格式错误"
|
||||||
return return_data
|
return return_data
|
||||||
|
|
||||||
try:
|
try:
|
||||||
result_msg = "剑网三最近技改\n"
|
#
|
||||||
|
result = data[0]
|
||||||
|
return_data["status"] = result.get('id')
|
||||||
|
|
||||||
|
result_msg = "新闻资讯推送\n"
|
||||||
# 仅展示前1条,避免消息过长
|
# 仅展示前1条,避免消息过长
|
||||||
for i, item in enumerate(data[:1], 1):
|
for i, item in enumerate(data[:1], 1):
|
||||||
result_msg += f"{i}. {item.get('title', '无标题')}\n"
|
result_msg += f"{i}. {item.get('title', '无标题')}\n"
|
||||||
result_msg += f"时间:{item.get('time', '未知时间')}\n"
|
result_msg += f"时间:{item.get('date', '未知时间')}\n"
|
||||||
result_msg += f"链接:{item.get('url', '无链接')}\n\n"
|
result_msg += f"链接:{item.get('url', '无链接')}\n"
|
||||||
|
|
||||||
return_data["data"] = result_msg
|
return_data["data"] = result_msg
|
||||||
return_data["code"] = 200
|
return_data["code"] = 200
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ class Jx3ApiPlugin(Star):
|
|||||||
|
|
||||||
# 周期函数调用
|
# 周期函数调用
|
||||||
self.kf_task = asyncio.create_task(self.at.cycle_kfjk())
|
self.kf_task = asyncio.create_task(self.at.cycle_kfjk())
|
||||||
|
self.xw_task = asyncio.create_task(self.at.cycle_xwzx())
|
||||||
# 初始化函数
|
# 初始化函数
|
||||||
#data=await self.jx3fun.SearchData()
|
#data=await self.jx3fun.SearchData()
|
||||||
#logger.info(data["msg"])
|
#logger.info(data["msg"])
|
||||||
@@ -427,4 +427,5 @@ class Jx3ApiPlugin(Star):
|
|||||||
await self.db.close()
|
await self.db.close()
|
||||||
# 后台z周期进程销毁
|
# 后台z周期进程销毁
|
||||||
self.kf_task.cancel()
|
self.kf_task.cancel()
|
||||||
|
self.xw_task.cancel()
|
||||||
logger.info("jx3api插件已卸载/停用")
|
logger.info("jx3api插件已卸载/停用")
|
||||||
Reference in New Issue
Block a user