This commit is contained in:
2026-07-26 17:57:44 +08:00
parent a555f785ba
commit 069f1bafe1
27 changed files with 4893 additions and 3846 deletions
+182
View File
@@ -0,0 +1,182 @@
from datetime import datetime
from typing import Any, Dict, List, Optional
from astrbot.api import logger
from .base import DATA_PROCESSING_ERRORS, BaseDomainService
class ArenaService(BaseDomainService):
async def zhanji(self, name: str, server: str, mode: str) -> Dict[str, Any]:
"""战绩"""
return_data = self.new_result()
# 1. 构造请求参数
params = {"server": server, "name": name, "mode": mode}
# 2. 调用基础请求
data: Optional[Dict[str, Any]] = await self.request("jx3_zhanji", params=params)
if not data:
return_data["msg"] = "查询角色战绩失败"
return return_data
# 4. 加载模板
if not await self.attach_template(return_data, "zhanji.html"):
return return_data
return_data["data"] = data
return_data["code"] = 200
return return_data
async def mingjianpaihang(self, limit: str, mode: str) -> Dict[str, Any]:
"""名剑排行"""
return_data = self.new_result()
# 1. 构造请求参数
params = {"limit": limit, "mode": mode}
# 2. 调用基础请求
data: Optional[Dict[str, Any]] = await self.request(
"jx3_mingjianpaihang", params=params
)
if not data:
return_data["msg"] = "获取接口数据失败"
return return_data
return_data["data"]["lists"] = data
# 4. 加载模板
if not await self.attach_template(return_data, "mingjianpaihang.html"):
return return_data
return_data["code"] = 200
return return_data
async def mingjiantongji(self, mode: str = "33") -> Dict[str, Any]:
"""名剑统计"""
return_data = self.new_result()
mode = str(mode)
if mode not in {"22", "33", "55"}:
return_data["msg"] = "模式错误,可选值:22、33、55"
return return_data
# 1. 构造请求参数
params = {"mode": mode}
# 2. 调用基础请求
data: Optional[List[Dict[str, Any]]] = await self.request(
"jx3_mingjiantongji", params=params
)
if not data or not isinstance(data, list):
return_data["msg"] = "未查询到名剑统计信息"
return return_data
# 3. 准备模板渲染数据
try:
return_data["data"] = {
"items": data,
"mode": mode,
"update_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
}
except DATA_PROCESSING_ERRORS as e:
logger.error(f"模板数据准备失败: {e}")
return_data["msg"] = "系统错误:模板渲染数据准备失败"
return return_data
# 4. 加载模板
if not await self.attach_template(return_data, "mingjiantongji.html"):
return return_data
return_data["code"] = 200
return return_data
async def tuanduizhaomu(self, server: str, keyword: str) -> Dict[str, Any]:
"""团队招募"""
return_data = self.new_result()
# 1. 构造请求参数
params = {"server": server, "keyword": keyword}
# 2. 调用基础请求
data: Optional[Dict[str, Any]] = await self.request(
"jx3_tuanduizhaomu", params=params
)
if not data:
return_data["msg"] = "获取接口信息失败"
return return_data
# 3. 处理返回数据
try:
for item in data["data"]:
item["createTime"] = datetime.fromtimestamp(
item["createTime"]
).strftime("%Y-%m-%d %H:%M:%S")
item["number"] = f"{item['number']}/{item['maxNumber']}"
return_data["data"]["list"] = data["data"]
except DATA_PROCESSING_ERRORS as e:
logger.error(f"数据处理时出错: {e}")
return_data["msg"] = "处理接口返回信息时出错"
return return_data
# 4. 加载模板
if not await self.attach_template(return_data, "tuanduizhaomu.html"):
return return_data
return_data["code"] = 200
return return_data
async def shitu(self, type_value: int, keyword: str, server: str) -> Dict[str, Any]:
"""师徒招募"""
return_data = self.new_result()
if type_value not in {1, 2}:
return_data["msg"] = "师徒查询类型错误"
return return_data
# 1. 构造请求参数
params = {"type": type_value, "server": server, "keyword": keyword}
# 2. 调用基础请求
data: Optional[Dict[str, Any]] = await self.request("jx3_shitu", params=params)
if not data or not isinstance(data, dict):
return_data["msg"] = "未查询到师徒招募信息"
return return_data
# 3. 处理返回数据
try:
items = data.get("data", [])
if not items:
return_data["msg"] = "未查询到师徒招募信息"
return return_data
title = "收徒信息" if type_value == 1 else "拜师信息"
return_data["data"] = {
"items": items,
"server": data.get("server", server),
"keyword": keyword,
"type_value": type_value,
"title": title,
"update_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
}
except DATA_PROCESSING_ERRORS as e:
logger.error(f"数据处理时出错: {e}")
return_data["msg"] = "处理接口返回信息时出错"
return return_data
# 4. 加载模板
if not await self.attach_template(return_data, "shitu.html"):
return return_data
return_data["code"] = 200
return return_data