正价事件推送,沙盘功能重做

This commit is contained in:
qsc
2026-09-02 23:53:40 +08:00
parent 328b09c24b
commit f28217ec27
15 changed files with 801 additions and 627 deletions
+57 -6
View File
@@ -684,6 +684,61 @@ class JX3APIService:
)
async def shapan(self, server: str) -> Dict[str, Any]:
"""阵营沙盘。"""
async def processor(data: Any, return_data: Dict[str, Any]) -> None:
if not isinstance(data, dict):
raise ValueError("沙盘接口返回的数据结构无效")
records = data.get("data")
if not isinstance(records, list) or not records:
raise ValueError("沙盘接口未返回据点数据")
items = []
for record in records:
if not isinstance(record, dict):
continue
camp_id = record.get("campId")
if camp_id not in (1, 2):
continue
castle_name = str(record.get("castleName") or "").strip()
if not castle_name:
continue
items.append(
{
"castle_name": castle_name,
"camp_key": "" if camp_id == 1 else "",
"camp_name": str(record.get("campName") or ""),
"tong_name": str(record.get("tongName") or ""),
"master_name": str(record.get("masterName") or ""),
"ride_piece": int(record.get("ridePiece") or 0),
"defend_count": int(record.get("defendCount") or 0),
}
)
if not items:
raise ValueError("沙盘接口未返回有效据点")
update_time = format_time(data.get("update"))
return_data["data"] = {
"zone": str(data.get("zone") or ""),
"server": str(data.get("server") or server),
"reset": int(data.get("reset") or 0),
"update_time": update_time,
"items": items,
}
return await self._request_api(
path="/sand/records",
params={"server": server, "token": self.token},
processor=processor,
template="shapan.html",
)
async def zhueevent(self,server: str,limit: str) -> Dict[str, Any]:
"""诛恶事件"""
async def processor(data: Any, return_data: Dict[str, Any]) -> None:
@@ -1414,9 +1469,7 @@ class JX3APIService:
"""维护公告"""
async def processor(data: Any, return_data: Dict[str, Any]) -> None:
result = data[0]
return_data["status"] = result.get('id')
result_msg = "维护推送\n"
result_msg = "维护公告\n"
# 仅展示前1条,避免消息过长
for i, item in enumerate(data[:limit], 1):
result_msg += f"{i}. 【{item.get('type', '无类型')}\n"
@@ -1438,9 +1491,7 @@ class JX3APIService:
"""新闻资讯"""
async def processor(data: Any, return_data: Dict[str, Any]) -> None:
result = data[0]
return_data["status"] = int(result.get('catid'))
result_msg = "新闻资讯推送\n"
result_msg = "新闻资讯\n"
# 仅展示前1条,避免消息过长
for i, item in enumerate(data[:limit], 1):
result_msg += f"{i}. 【{item.get('type', '无类型')}\n"