修改6
This commit is contained in:
@@ -37,6 +37,18 @@
|
|||||||
帮战记录:帮战 服务器
|
帮战记录:帮战 服务器
|
||||||
阵营沙盘:沙盘 服务器
|
阵营沙盘:沙盘 服务器
|
||||||
诛恶事件:诛恶 服务器
|
诛恶事件:诛恶 服务器
|
||||||
|
【角色名片】
|
||||||
|
名片缓存:名片 服务器 角色
|
||||||
|
名片历史:全名片 服务器 角色
|
||||||
|
随机名片:随机秀 服务器 [门派] [体型]
|
||||||
|
【奇遇相关】
|
||||||
|
奇遇记录:奇遇 服务器 角色 | 查询 服务器 角色
|
||||||
|
未触发的:未出 服务器 角色
|
||||||
|
奇遇汇总:汇总 服务器 [天数]
|
||||||
|
近期奇遇:近期 服务器 [数量]
|
||||||
|
奇遇统计:统计 奇遇 [服务器] [数量]
|
||||||
|
奇遇攻略:攻略 奇遇
|
||||||
|
|
||||||
|
|
||||||
## 安装与依赖
|
## 安装与依赖
|
||||||
|
|
||||||
|
|||||||
@@ -125,29 +125,4 @@ class AIJX3Service:
|
|||||||
processor=processor,
|
processor=processor,
|
||||||
template=""
|
template=""
|
||||||
)
|
)
|
||||||
return_data = self._init_return_data()
|
|
||||||
|
|
||||||
# 1. 构造请求参数
|
|
||||||
params = {"serverName": server}
|
|
||||||
|
|
||||||
# 2. 调用基础请求
|
|
||||||
data: Optional[Dict[str, Any]] = await self._base_request(
|
|
||||||
"aijx3_shapan", "POST", params=params
|
|
||||||
)
|
|
||||||
|
|
||||||
if not data:
|
|
||||||
return_data["msg"] = "获取接口信息失败"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
# 3. 处理返回数据 (直接提取图片 URL)
|
|
||||||
pic_url = data.get("picUrl")
|
|
||||||
if pic_url:
|
|
||||||
return_data["data"] = pic_url
|
|
||||||
else:
|
|
||||||
return_data["msg"] = "接口未返回图片URL"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
return_data["code"] = 200
|
|
||||||
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
|
|||||||
+207
-423
@@ -725,6 +725,213 @@ class JX3APIService:
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def jueshemingpian(self, server: str, name: str) -> Dict[str, Any]:
|
||||||
|
"""名片缓存"""
|
||||||
|
async def processor(data: Any, return_data: Dict[str, Any]) -> None:
|
||||||
|
url = data.get("showAvatar")
|
||||||
|
if not url:
|
||||||
|
return_data["msg"] = "未获取到名片图片"
|
||||||
|
return return_data
|
||||||
|
|
||||||
|
server_name = data.get("serverName", server)
|
||||||
|
role_name = data.get("roleName", name)
|
||||||
|
show_like = data.get("showLike", 0)
|
||||||
|
msg0 = f"{server_name}-{role_name}"
|
||||||
|
msg1 = f"点赞:{show_like}"
|
||||||
|
|
||||||
|
return_data["data"] = [
|
||||||
|
Comp.Plain(msg0),
|
||||||
|
Comp.Image.fromURL(url),
|
||||||
|
Comp.Plain(msg1)
|
||||||
|
]
|
||||||
|
|
||||||
|
return await self._request_api(
|
||||||
|
path="/card/cached",
|
||||||
|
params={"server": server, "name": name, "token": self.token},
|
||||||
|
processor=processor,
|
||||||
|
template=""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def shuijimingpian(self, server:str, force: str, body:str,) -> Dict[str, Any]:
|
||||||
|
"""随机名片"""
|
||||||
|
async def processor(data: Any, return_data: Dict[str, Any]) -> None:
|
||||||
|
url = data.get("showAvatar")
|
||||||
|
if not url:
|
||||||
|
return_data["msg"] = "未获取到名片图片"
|
||||||
|
return return_data
|
||||||
|
|
||||||
|
server_name = data.get("serverName")
|
||||||
|
role_name = data.get("roleName")
|
||||||
|
msg = f"{server_name}-{role_name}"
|
||||||
|
|
||||||
|
return_data["data"] = [
|
||||||
|
Comp.Plain(msg),
|
||||||
|
Comp.Image.fromURL(url),
|
||||||
|
]
|
||||||
|
|
||||||
|
return await self._request_api(
|
||||||
|
path="/card/random",
|
||||||
|
params={"server": server, "body": body, "force":force, "token": self.token},
|
||||||
|
processor=processor,
|
||||||
|
template=""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def shuoyoumingpian(self, server: str, name: str) -> Dict[str, Any]:
|
||||||
|
"""名片历史"""
|
||||||
|
async def processor(data: Any, return_data: Dict[str, Any]) -> None:
|
||||||
|
chain = []
|
||||||
|
for m in data:
|
||||||
|
status = "当前展示" if m.get("showActive") else "未展示"
|
||||||
|
msg = f"第{m.get('showIndex')}张 {status}"
|
||||||
|
url = m.get("showAvatar")
|
||||||
|
|
||||||
|
if not url:
|
||||||
|
logger.warning(f"第{m.get('showIndex')}张名片缺少图片URL,已跳过")
|
||||||
|
continue
|
||||||
|
|
||||||
|
chain.extend([
|
||||||
|
Comp.Plain(msg),
|
||||||
|
Comp.Image.fromURL(url),
|
||||||
|
])
|
||||||
|
|
||||||
|
if not chain:
|
||||||
|
return_data["msg"] = "未获取到有效的名片数据"
|
||||||
|
return return_data
|
||||||
|
|
||||||
|
return_data["data"] = chain
|
||||||
|
|
||||||
|
return await self._request_api(
|
||||||
|
path="/card/records",
|
||||||
|
params={"server": server, "name": name, "token": self.token},
|
||||||
|
processor=processor,
|
||||||
|
template=""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def qiyuhuizong(self, server: str, num: int) -> Dict[str, Any]:
|
||||||
|
"""奇遇汇总"""
|
||||||
|
async def processor(data: Any, return_data: Dict[str, Any]) -> None:
|
||||||
|
for item in data:
|
||||||
|
latest = item.get("last")
|
||||||
|
item["latest_name"] = latest.get("name")
|
||||||
|
item["latest_time"] = format_time(latest.get("time"))
|
||||||
|
|
||||||
|
return_data["data"] = {
|
||||||
|
"items": data,
|
||||||
|
"server": server,
|
||||||
|
"num": num,
|
||||||
|
"update_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
}
|
||||||
|
|
||||||
|
return await self._request_api(
|
||||||
|
path="/event/collect",
|
||||||
|
params={"server": server, "num": num, "token": self.token},
|
||||||
|
processor=processor,
|
||||||
|
template="qiyuhuizong.html"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def weizuoqiyu(self, server: str, name: str, ) -> Dict[str, Any]:
|
||||||
|
"""未出奇遇"""
|
||||||
|
async def processor(data: Any, return_data: Dict[str, Any]) -> None:
|
||||||
|
return_data["data"]["ptqy"] = []
|
||||||
|
return_data["data"]["jsqy"] = []
|
||||||
|
return_data["data"]["name"] = name
|
||||||
|
return_data["data"]["server"] = server
|
||||||
|
|
||||||
|
for item in data:
|
||||||
|
try:
|
||||||
|
level = int(item.get("level", 0))
|
||||||
|
except (TypeError, ValueError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
event_item = {
|
||||||
|
"event": item.get("name"),
|
||||||
|
"time": "未触发"
|
||||||
|
}
|
||||||
|
|
||||||
|
if level == 1:
|
||||||
|
return_data["data"]["ptqy"].append(event_item)
|
||||||
|
elif level == 2:
|
||||||
|
return_data["data"]["jsqy"].append(event_item)
|
||||||
|
|
||||||
|
if not return_data["data"]["ptqy"] and not return_data["data"]["jsqy"]:
|
||||||
|
return_data["msg"] = "未查询到未做普通或绝世奇遇"
|
||||||
|
return return_data
|
||||||
|
|
||||||
|
return await self._request_api(
|
||||||
|
path="/event/missing",
|
||||||
|
params={"server": server, "name": name, "token": self.token},
|
||||||
|
processor=processor,
|
||||||
|
template="weizuoqiyu.html"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def jinqiqiyu(self, server: str, limit: int) -> Dict[str, Any]:
|
||||||
|
"""近期奇遇"""
|
||||||
|
async def processor(data: Any, return_data: Dict[str, Any]) -> None:
|
||||||
|
for item in data:
|
||||||
|
item["time"] = format_time(item.get("time"))
|
||||||
|
|
||||||
|
return_data["data"] = {
|
||||||
|
"items": data,
|
||||||
|
"server": server,
|
||||||
|
"update_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
}
|
||||||
|
|
||||||
|
return await self._request_api(
|
||||||
|
path="/event/recent",
|
||||||
|
params={"server": server, "limit": limit, "token": self.token},
|
||||||
|
processor=processor,
|
||||||
|
template="jinqiqiyu.html"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def juesheqiyu(self, server: str, name: str, full: int) -> Dict[str, Any]:
|
||||||
|
"""角色奇遇"""
|
||||||
|
async def processor(data: Any, return_data: Dict[str, Any]) -> None:
|
||||||
|
return_data["data"]["ptqy"] = []
|
||||||
|
return_data["data"]["jsqy"] = []
|
||||||
|
return_data["data"]["cwqy"] = []
|
||||||
|
|
||||||
|
for item in data:
|
||||||
|
item["time"] = datetime.fromtimestamp(item["time"]).strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
if item["level"] == 1:
|
||||||
|
return_data["data"]["ptqy"].append(item)
|
||||||
|
if item["level"] == 2:
|
||||||
|
return_data["data"]["jsqy"].append(item)
|
||||||
|
if item["level"] == 3:
|
||||||
|
return_data["data"]["cwqy"].append(item)
|
||||||
|
|
||||||
|
return await self._request_api(
|
||||||
|
path="/event/records",
|
||||||
|
params= {"server": server, "name": name, "full": full, "token": self.token},
|
||||||
|
processor=processor,
|
||||||
|
template="juesheqiyu.html"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def qiyutongji(self, name: str, server: str, limit: int) -> Dict[str, Any]:
|
||||||
|
"""奇遇统计"""
|
||||||
|
async def processor(data: Any, return_data: Dict[str, Any]) -> None:
|
||||||
|
for item in data:
|
||||||
|
item["time"] = format_time(item.get("time"))
|
||||||
|
|
||||||
|
return_data["data"] = {
|
||||||
|
"items": data,
|
||||||
|
"server": server,
|
||||||
|
"update_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
|
||||||
|
"qiyuname": name
|
||||||
|
}
|
||||||
|
|
||||||
|
return await self._request_api(
|
||||||
|
path="/event/statistics",
|
||||||
|
params={"name": name, "server": server, "limit": limit, "token": self.token},
|
||||||
|
processor=processor,
|
||||||
|
template="qiyuliebiao.html"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1694,294 +1901,19 @@ class JX3APIService:
|
|||||||
return return_data
|
return return_data
|
||||||
|
|
||||||
|
|
||||||
async def juesheqiyu(self, name: str, server: str) -> Dict[str, Any]:
|
|
||||||
"""角色奇遇"""
|
|
||||||
return_data = self._init_return_data()
|
|
||||||
|
|
||||||
# 1. 构造请求参数
|
|
||||||
params = {"server": server, "name": name, "token": self.token}
|
|
||||||
|
|
||||||
# 2. 调用基础请求
|
|
||||||
data: Optional[List[Dict[str, Any]]] = await self._base_request(
|
|
||||||
"jx3_juesheqiyu", "GET", params=params
|
|
||||||
)
|
|
||||||
|
|
||||||
if not data:
|
|
||||||
return_data["msg"] = "未找到改角色奇遇信息"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
# 3. 处理返回数据
|
|
||||||
try:
|
|
||||||
return_data["data"]["ptqy"] = []
|
|
||||||
return_data["data"]["jsqy"] = []
|
|
||||||
return_data["data"]["cwqy"] = []
|
|
||||||
|
|
||||||
for item in data:
|
|
||||||
item["time"] = datetime.fromtimestamp(item["time"]).strftime("%Y-%m-%d %H:%M:%S")
|
|
||||||
if item["level"] == 1:
|
|
||||||
return_data["data"]["ptqy"].append(item)
|
|
||||||
if item["level"] == 2:
|
|
||||||
return_data["data"]["jsqy"].append(item)
|
|
||||||
if item["level"] == 3:
|
|
||||||
return_data["data"]["cwqy"].append(item)
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"处理返回数据失败: {e}")
|
|
||||||
return_data["msg"] = "处理返回数据失败"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
# 4. 加载模板
|
|
||||||
try:
|
|
||||||
return_data["temp"] = await load_template("juesheqiyu.html")
|
|
||||||
except FileNotFoundError as e:
|
|
||||||
logger.error(f"加载模板失败: {e}")
|
|
||||||
return_data["msg"] = "系统错误:模板文件不存在"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
return_data["code"] = 200
|
|
||||||
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
|
|
||||||
async def weizuoqiyu(self, name: str, server: str) -> Dict[str, Any]:
|
|
||||||
"""未做奇遇"""
|
|
||||||
return_data = self._init_return_data()
|
|
||||||
|
|
||||||
# 1. 构造请求参数
|
|
||||||
params = {"server": server, "name": name, "token": self.token}
|
|
||||||
|
|
||||||
# 2. 调用基础请求
|
|
||||||
data: Optional[List[Dict[str, Any]]] = await self._base_request(
|
|
||||||
"jx3_weizuoqiyu", "GET", params=params
|
|
||||||
)
|
|
||||||
|
|
||||||
if not data:
|
|
||||||
return_data["msg"] = "未查询到未做奇遇信息"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
if not isinstance(data, list):
|
|
||||||
return_data["msg"] = "获取接口信息失败或数据格式错误"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
# 3. 处理返回数据
|
|
||||||
try:
|
|
||||||
return_data["data"]["ptqy"] = []
|
|
||||||
return_data["data"]["jsqy"] = []
|
|
||||||
return_data["data"]["name"] = name
|
|
||||||
return_data["data"]["server"] = server
|
|
||||||
|
|
||||||
for item in data:
|
|
||||||
event_name = item.get("name") or item.get("event")
|
|
||||||
if not event_name:
|
|
||||||
continue
|
|
||||||
|
|
||||||
try:
|
|
||||||
level = int(item.get("level", 0))
|
|
||||||
except (TypeError, ValueError):
|
|
||||||
continue
|
|
||||||
|
|
||||||
event_item = {
|
|
||||||
"event": event_name,
|
|
||||||
"time": "未触发"
|
|
||||||
}
|
|
||||||
|
|
||||||
if level == 1:
|
|
||||||
return_data["data"]["ptqy"].append(event_item)
|
|
||||||
elif level == 2:
|
|
||||||
return_data["data"]["jsqy"].append(event_item)
|
|
||||||
|
|
||||||
if not return_data["data"]["ptqy"] and not return_data["data"]["jsqy"]:
|
|
||||||
return_data["msg"] = "未查询到未做普通或绝世奇遇"
|
|
||||||
return return_data
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"处理返回数据失败: {e}")
|
|
||||||
return_data["msg"] = "处理返回数据失败"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
# 4. 加载模板
|
|
||||||
try:
|
|
||||||
return_data["temp"] = await load_template("weizuoqiyu.html")
|
|
||||||
except FileNotFoundError as e:
|
|
||||||
logger.error(f"加载模板失败: {e}")
|
|
||||||
return_data["msg"] = "系统错误:模板文件不存在"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
return_data["code"] = 200
|
|
||||||
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
|
|
||||||
async def qiyutongji(self, name: str, server: str) -> Dict[str, Any]:
|
|
||||||
"""奇遇统计"""
|
|
||||||
return_data = self._init_return_data()
|
|
||||||
|
|
||||||
params = {"server": server, "name": name, "token": self.token}
|
|
||||||
|
|
||||||
data_list: Optional[List[Dict[str, Any]]] = await self._base_request("jx3_qiyutongji", "GET", params=params)
|
|
||||||
|
|
||||||
if not data_list or not isinstance(data_list, list):
|
|
||||||
return_data["msg"] = "获取接口信息失败或数据格式错误"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
# 格式化时间
|
|
||||||
try:
|
|
||||||
for item in data_list:
|
|
||||||
item["time"] = datetime.fromtimestamp(item["time"]).strftime("%Y-%m-%d %H:%M:%S")
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"数据处理时出错: {e}")
|
|
||||||
return_data["msg"] = "处理接口返回信息时出错"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
# 准备模板渲染数据
|
|
||||||
try:
|
|
||||||
return_data["data"] = {
|
|
||||||
"items": data_list,
|
|
||||||
"server": server,
|
|
||||||
"update_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
|
|
||||||
"qiyuname": name
|
|
||||||
}
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"模板数据准备失败: {e}")
|
|
||||||
return_data["msg"] = "系统错误:模板渲染数据准备失败"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
# 加载模板
|
|
||||||
try:
|
|
||||||
return_data["temp"] = await load_template("qiyuliebiao.html")
|
|
||||||
except FileNotFoundError as e:
|
|
||||||
logger.error(f"加载模板失败: {e}")
|
|
||||||
return_data["msg"] = "系统错误:模板文件不存在"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
return_data["code"] = 200
|
|
||||||
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
|
|
||||||
async def jinqiqiyu(self, server: str) -> Dict[str, Any]:
|
|
||||||
"""近期奇遇"""
|
|
||||||
return_data = self._init_return_data()
|
|
||||||
|
|
||||||
params = {"server": server, "token": self.token}
|
|
||||||
|
|
||||||
data_list: Optional[List[Dict[str, Any]]] = await self._base_request(
|
|
||||||
"jx3_jinqiqiyu", "GET", params=params
|
|
||||||
)
|
|
||||||
|
|
||||||
if not data_list or not isinstance(data_list, list):
|
|
||||||
return_data["msg"] = "未查询到近期奇遇信息"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
# 格式化时间
|
|
||||||
try:
|
|
||||||
for item in data_list:
|
|
||||||
event_time = item.get("time")
|
|
||||||
if event_time:
|
|
||||||
try:
|
|
||||||
item["time"] = datetime.fromtimestamp(int(event_time)).strftime("%Y-%m-%d %H:%M:%S")
|
|
||||||
except (TypeError, ValueError, OSError):
|
|
||||||
item["time"] = str(event_time)
|
|
||||||
else:
|
|
||||||
item["time"] = ""
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"数据处理时出错: {e}")
|
|
||||||
return_data["msg"] = "处理接口返回信息时出错"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
# 准备模板渲染数据
|
|
||||||
try:
|
|
||||||
return_data["data"] = {
|
|
||||||
"items": data_list,
|
|
||||||
"server": server,
|
|
||||||
"update_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
|
||||||
}
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"模板数据准备失败: {e}")
|
|
||||||
return_data["msg"] = "系统错误:模板渲染数据准备失败"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
# 加载模板
|
|
||||||
try:
|
|
||||||
return_data["temp"] = await load_template("jinqiqiyu.html")
|
|
||||||
except FileNotFoundError as e:
|
|
||||||
logger.error(f"加载模板失败: {e}")
|
|
||||||
return_data["msg"] = "系统错误:模板文件不存在"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
return_data["code"] = 200
|
|
||||||
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
|
|
||||||
async def qiyuhuizong(self, server: str, num: int = 7) -> Dict[str, Any]:
|
|
||||||
"""奇遇汇总"""
|
|
||||||
return_data = self._init_return_data()
|
|
||||||
|
|
||||||
if num < 1 or num > 30:
|
|
||||||
return_data["msg"] = "汇总天数需在 1-30 天之间"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
params = {"server": server, "num": num, "token": self.token}
|
|
||||||
|
|
||||||
data_list: Optional[List[Dict[str, Any]]] = await self._base_request(
|
|
||||||
"jx3_qiyuhuizong", "GET", params=params
|
|
||||||
)
|
|
||||||
|
|
||||||
if not data_list or not isinstance(data_list, list):
|
|
||||||
return_data["msg"] = "未查询到奇遇汇总信息"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
# 整理最近一次触发信息
|
|
||||||
try:
|
|
||||||
for item in data_list:
|
|
||||||
latest = item.get("data")
|
|
||||||
if not isinstance(latest, dict):
|
|
||||||
latest = {}
|
|
||||||
|
|
||||||
item["latest_name"] = latest.get("name", "")
|
|
||||||
|
|
||||||
latest_time = latest.get("time")
|
|
||||||
if latest_time:
|
|
||||||
try:
|
|
||||||
item["latest_time"] = datetime.fromtimestamp(int(latest_time)).strftime("%Y-%m-%d %H:%M:%S")
|
|
||||||
except (TypeError, ValueError, OSError):
|
|
||||||
item["latest_time"] = str(latest_time)
|
|
||||||
else:
|
|
||||||
item["latest_time"] = ""
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"数据处理时出错: {e}")
|
|
||||||
return_data["msg"] = "处理接口返回信息时出错"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
# 准备模板渲染数据
|
|
||||||
try:
|
|
||||||
return_data["data"] = {
|
|
||||||
"items": data_list,
|
|
||||||
"server": server,
|
|
||||||
"num": num,
|
|
||||||
"update_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
|
||||||
}
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"模板数据准备失败: {e}")
|
|
||||||
return_data["msg"] = "系统错误:模板渲染数据准备失败"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
# 加载模板
|
|
||||||
try:
|
|
||||||
return_data["temp"] = await load_template("qiyuhuizong.html")
|
|
||||||
except FileNotFoundError as e:
|
|
||||||
logger.error(f"加载模板失败: {e}")
|
|
||||||
return_data["msg"] = "系统错误:模板文件不存在"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
return_data["code"] = 200
|
|
||||||
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -2436,46 +2368,7 @@ class JX3APIService:
|
|||||||
return return_data
|
return return_data
|
||||||
|
|
||||||
|
|
||||||
async def jueshemingpian(self, server: str, name: str) -> Dict[str, Any]:
|
|
||||||
"""单张名片"""
|
|
||||||
return_data = self._init_return_data()
|
|
||||||
|
|
||||||
# 1. 构造请求参数
|
|
||||||
params = {"server": server, "name": name, "token": self.token}
|
|
||||||
|
|
||||||
# 2. 调用基础请求
|
|
||||||
data: Optional[Dict[str, Any]] = await self._base_request(
|
|
||||||
"jx3_jieshemingpian", "GET", params=params
|
|
||||||
)
|
|
||||||
|
|
||||||
if not data or not isinstance(data, dict):
|
|
||||||
return_data["msg"] = "未找到该角色名片"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
# 3. 处理返回数据
|
|
||||||
try:
|
|
||||||
url = data.get("showAvatar")
|
|
||||||
if not url:
|
|
||||||
return_data["msg"] = "未获取到名片图片"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
server_name = data.get("serverName", server)
|
|
||||||
role_name = data.get("roleName", name)
|
|
||||||
show_like = data.get("showLike", 0)
|
|
||||||
msg = f"{server_name}-{role_name} 点赞:{show_like}"
|
|
||||||
|
|
||||||
return_data["data"] = [
|
|
||||||
Comp.Plain(msg),
|
|
||||||
Comp.Image.fromURL(url),
|
|
||||||
]
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"数据处理时出错: {e}")
|
|
||||||
return_data["msg"] = "处理接口返回信息时出错"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
return_data["code"] = 200
|
|
||||||
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
|
|
||||||
async def jingnai(self, name: str, server: str) -> Dict[str, Any]:
|
async def jingnai(self, name: str, server: str) -> Dict[str, Any]:
|
||||||
@@ -2558,76 +2451,10 @@ class JX3APIService:
|
|||||||
return return_data
|
return return_data
|
||||||
|
|
||||||
|
|
||||||
async def shuoyoumingpian(self, server: str, name: str) -> Dict[str, Any]:
|
|
||||||
"""所有名片"""
|
|
||||||
return_data = self._init_return_data()
|
|
||||||
|
|
||||||
# 1. 构造请求参数
|
|
||||||
params = {"server": server, "name": name, "token": self.token}
|
|
||||||
|
|
||||||
# 2. 调用基础请求
|
|
||||||
data: Optional[list[Dict[str, Any]]] = await self._base_request(
|
|
||||||
"jx3_allmingpian", "GET", params=params
|
|
||||||
)
|
|
||||||
|
|
||||||
if not data:
|
|
||||||
return_data["msg"] = "未找到该角色"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
# 3. 处理返回数据
|
|
||||||
try:
|
|
||||||
chain = []
|
|
||||||
for m in data:
|
|
||||||
status = "已启用" if m.get("showActive") else "未启用"
|
|
||||||
msg = f"第{m.get('showIndex')}张 {status}"
|
|
||||||
url = m.get("showAvatar")
|
|
||||||
|
|
||||||
if not url:
|
|
||||||
logger.warning(f"第{m.get('showIndex')}张名片缺少图片URL,已跳过")
|
|
||||||
continue
|
|
||||||
|
|
||||||
chain.extend([
|
|
||||||
Comp.Plain(msg),
|
|
||||||
Comp.Image.fromURL(url),
|
|
||||||
])
|
|
||||||
|
|
||||||
if not chain:
|
|
||||||
return_data["msg"] = "未获取到有效的名片数据"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"数据处理时出错: {e}")
|
|
||||||
return_data["msg"] = "处理接口返回信息时出错"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
return_data["data"] = chain
|
|
||||||
return_data["code"] = 200
|
|
||||||
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
|
|
||||||
async def shuijimingpian(self, force: str, body:str, server:str) -> Dict[str, Any]:
|
|
||||||
"""随机名片"""
|
|
||||||
return_data = self._init_return_data()
|
|
||||||
|
|
||||||
# 1. 构造请求参数
|
|
||||||
params = {"server": server, "body": body, "force":force, "token": self.token}
|
|
||||||
|
|
||||||
# 2. 调用基础请求
|
|
||||||
data: Optional[Dict[str, Any]] = await self._base_request(
|
|
||||||
"jx3_shuijimingpian", "GET", params=params
|
|
||||||
)
|
|
||||||
|
|
||||||
if not data:
|
|
||||||
return_data["msg"] = "获取接口信息失败"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
# 3. 处理返回数据 (直接提取图片 URL)
|
|
||||||
return_data["data"] = data['showAvatar']
|
|
||||||
|
|
||||||
return_data["code"] = 200
|
|
||||||
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -2901,50 +2728,7 @@ class JX3APIService:
|
|||||||
return return_data
|
return return_data
|
||||||
|
|
||||||
|
|
||||||
async def qiyugonglue(self, name: str) -> Dict[str, Any]:
|
|
||||||
"""奇遇攻略"""
|
|
||||||
return_data = self._init_return_data()
|
|
||||||
|
|
||||||
# 1. 构造请求参数
|
|
||||||
params = {"name": name}
|
|
||||||
|
|
||||||
# 2. 调用基础请求
|
|
||||||
data: Optional[list[Dict[str, Any]]] = await self._base_request(
|
|
||||||
"jx3box_qiyugonglue", "GET", params=params, out_key="list"
|
|
||||||
)
|
|
||||||
|
|
||||||
if not data:
|
|
||||||
return_data["msg"] = "未找到该奇遇"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
# 提取dwID
|
|
||||||
dwID = data[0]["dwID"]
|
|
||||||
url = f"https://node.jx3box.com/serendipity/{dwID}/achievement"
|
|
||||||
logger.debug(f"获取ID接口地址:{url}")
|
|
||||||
|
|
||||||
data1 = await self._api.get(url)
|
|
||||||
url1 = f"https://cms.jx3box.com/api/cms/wiki/post/type/achievement/source/{data1['achievement_id']}"
|
|
||||||
logger.debug(f"获取攻略接口地址:{url1}")
|
|
||||||
|
|
||||||
# 获取奇遇攻略
|
|
||||||
data2 = await self._api.get(url1, out_key="data")
|
|
||||||
if not data2:
|
|
||||||
return_data["msg"] = "获取攻略数据异常"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
# 4. 处理数据
|
|
||||||
try:
|
|
||||||
return_data["data"] = {}
|
|
||||||
content = data2["post"]["content"]
|
|
||||||
return_data["temp"] = content
|
|
||||||
except Exception as e:
|
|
||||||
logger.exception("处理返回数据失败")
|
|
||||||
return_data["msg"] = "处理返回数据失败"
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
return_data["code"] = 200
|
|
||||||
|
|
||||||
return return_data
|
|
||||||
|
|
||||||
|
|
||||||
async def hong1(self, name: str) -> Dict[str, Any]:
|
async def hong1(self, name: str) -> Dict[str, Any]:
|
||||||
|
|||||||
@@ -0,0 +1,85 @@
|
|||||||
|
import json
|
||||||
|
import html
|
||||||
|
import re
|
||||||
|
from datetime import datetime, timedelta
|
||||||
|
from typing import Dict, Any, Optional, List, Union
|
||||||
|
from inspect import isawaitable
|
||||||
|
from typing import Any, Awaitable, Callable, Dict, Optional
|
||||||
|
|
||||||
|
from astrbot.api import logger
|
||||||
|
from astrbot.api import AstrBotConfig
|
||||||
|
import astrbot.api.message_components as Comp
|
||||||
|
|
||||||
|
from .request import APIClient
|
||||||
|
from .sqlite import AsyncSQLiteDB
|
||||||
|
from .fun_basic import load_template,gold_to_parts,week_to_num,compare_date_str,format_time,format_remaining
|
||||||
|
|
||||||
|
|
||||||
|
class JX3BOXService:
|
||||||
|
def __init__(self, config: AstrBotConfig, sqlite: AsyncSQLiteDB, cache_sqlite: Optional[AsyncSQLiteDB] = None):
|
||||||
|
# 实例化 API Client
|
||||||
|
self._api: APIClient = APIClient()
|
||||||
|
# 引用插件配置文件
|
||||||
|
self._config = config
|
||||||
|
# 引用sqlite
|
||||||
|
self._sql_db = sqlite
|
||||||
|
self._cache_db = cache_sqlite or sqlite
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
async def close(self):
|
||||||
|
"""释放底层 APIClient 资源"""
|
||||||
|
if self._api:
|
||||||
|
await self._api.close()
|
||||||
|
|
||||||
|
|
||||||
|
def _init_return_data(self) -> Dict[str, Any]:
|
||||||
|
"""初始化标准的返回数据结构"""
|
||||||
|
return {
|
||||||
|
"code": 0,
|
||||||
|
"msg": "功能函数未执行",
|
||||||
|
"data": {},
|
||||||
|
"temp": "",
|
||||||
|
"icons": {}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async def qiyugonglue(self, name: str) -> Dict[str, Any]:
|
||||||
|
"""奇遇攻略"""
|
||||||
|
return_data = self._init_return_data()
|
||||||
|
|
||||||
|
# 1. 调用基础请求
|
||||||
|
api_url = "https://node.jx3box.com/serendipities"
|
||||||
|
data = await self._api.get(api_url, params={"name": name}, out_key="list")
|
||||||
|
if not data:
|
||||||
|
return_data["msg"] = "未找到该奇遇"
|
||||||
|
return return_data
|
||||||
|
|
||||||
|
# 提取dwID
|
||||||
|
dwID = data[0]["dwID"]
|
||||||
|
url = f"https://node.jx3box.com/serendipity/{dwID}/achievement"
|
||||||
|
logger.debug(f"获取ID接口地址:{url}")
|
||||||
|
|
||||||
|
data1 = await self._api.get(url)
|
||||||
|
url1 = f"https://cms.jx3box.com/api/cms/wiki/post/type/achievement/source/{data1['achievement_id']}"
|
||||||
|
logger.debug(f"获取攻略接口地址:{url1}")
|
||||||
|
|
||||||
|
# 获取奇遇攻略
|
||||||
|
data2 = await self._api.get(url1, out_key="data")
|
||||||
|
if not data2:
|
||||||
|
return_data["msg"] = "获取攻略数据异常"
|
||||||
|
return return_data
|
||||||
|
|
||||||
|
# 4. 处理数据
|
||||||
|
try:
|
||||||
|
return_data["data"] = {}
|
||||||
|
content = data2["post"]["content"]
|
||||||
|
return_data["temp"] = content
|
||||||
|
except Exception as e:
|
||||||
|
logger.exception("处理返回数据失败")
|
||||||
|
return_data["msg"] = "处理返回数据失败"
|
||||||
|
return return_data
|
||||||
|
|
||||||
|
return_data["code"] = 200
|
||||||
|
|
||||||
|
return return_data
|
||||||
+56
-34
@@ -8,6 +8,7 @@ from astrbot.core.utils.session_waiter import (
|
|||||||
|
|
||||||
from .jx3api_data import JX3APIService
|
from .jx3api_data import JX3APIService
|
||||||
from .aijx3_data import AIJX3Service
|
from .aijx3_data import AIJX3Service
|
||||||
|
from .jx3box_data import JX3BOXService
|
||||||
from .async_task import AsyncTask
|
from .async_task import AsyncTask
|
||||||
from .bilei_data import BiLeidata
|
from .bilei_data import BiLeidata
|
||||||
|
|
||||||
@@ -37,10 +38,19 @@ class MessageBuilder:
|
|||||||
"18:剑侠录总览"
|
"18:剑侠录总览"
|
||||||
)
|
)
|
||||||
|
|
||||||
def __init__(self, server: str, jx3api: JX3APIService, aijx3: AIJX3Service,bilei: BiLeidata, jx3at: AsyncTask, icons: dict[str, dict[str, str]]):
|
def __init__(self,
|
||||||
|
server: str,
|
||||||
|
jx3api: JX3APIService,
|
||||||
|
aijx3: AIJX3Service,
|
||||||
|
jx3box: JX3BOXService,
|
||||||
|
bilei: BiLeidata,
|
||||||
|
jx3at: AsyncTask,
|
||||||
|
icons: dict[str, dict[str, str]]
|
||||||
|
):
|
||||||
self.server = server
|
self.server = server
|
||||||
self.jx3api = jx3api
|
self.jx3api = jx3api
|
||||||
self.aijx3 = aijx3
|
self.aijx3 = aijx3
|
||||||
|
self.jx3box = jx3box
|
||||||
self.bilei = bilei
|
self.bilei = bilei
|
||||||
self.jx3at = jx3at
|
self.jx3at = jx3at
|
||||||
self.icons = icons
|
self.icons = icons
|
||||||
@@ -449,6 +459,45 @@ class MessageBuilder:
|
|||||||
""" 诛恶事件 服务器"""
|
""" 诛恶事件 服务器"""
|
||||||
return await self.T2I_image_msg(event, lambda: self.jx3api.zhueevent(server,20))
|
return await self.T2I_image_msg(event, lambda: self.jx3api.zhueevent(server,20))
|
||||||
|
|
||||||
|
async def jueshemingpian(self, event: AstrMessageEvent, server: str , name: str , ):
|
||||||
|
""" 名片 服务器 角色 """
|
||||||
|
return await self.plain_chain(event, lambda: self.jx3api.jueshemingpian(server, name))
|
||||||
|
|
||||||
|
async def shuoyoumingpian(self, event: AstrMessageEvent, server: str, name: str, ):
|
||||||
|
""" 全名片 服务器 角色 """
|
||||||
|
return await self.plain_chain(event, lambda: self.jx3api.shuoyoumingpian(server,name))
|
||||||
|
|
||||||
|
async def shuijimingpian(self, event: AstrMessageEvent,server: str, force: str = "", body: str = "", ):
|
||||||
|
""" 随机秀 服务器 门派 体型 """
|
||||||
|
return await self.plain_chain(event, lambda: self.jx3api.shuijimingpian(server,force,body))
|
||||||
|
|
||||||
|
async def qiyuhuizong(self, event: AstrMessageEvent,server: str, num: str = "7" ):
|
||||||
|
""" 汇总 服务器 天数 """
|
||||||
|
return await self.T2I_image_msg(event, lambda: self.jx3api.qiyuhuizong(server, num))
|
||||||
|
|
||||||
|
async def weizuoqiyu(self, event: AstrMessageEvent,server: str, name: str, ):
|
||||||
|
""" 未出 服务器 角色 """
|
||||||
|
return await self.T2I_image_msg(event, lambda: self.jx3api.weizuoqiyu(server,name))
|
||||||
|
|
||||||
|
async def jinqiqiyu(self, event: AstrMessageEvent,server: str, limit: int = 20):
|
||||||
|
""" 近期 服务器 数量"""
|
||||||
|
return await self.T2I_image_msg(event, lambda: self.jx3api.jinqiqiyu(server,limit))
|
||||||
|
|
||||||
|
async def juesheqiyu(self, event: AstrMessageEvent, server: str, name: str):
|
||||||
|
""" 奇遇 服务器 角色 """
|
||||||
|
return await self.T2I_image_msg(event, lambda: self.jx3api.juesheqiyu(server,name, 0))
|
||||||
|
|
||||||
|
async def qiyutongji(self, event: AstrMessageEvent,adventureName: str, server: str = "",limit: int = 20):
|
||||||
|
""" 统计 奇遇 服务器 数量"""
|
||||||
|
return await self.T2I_image_msg(event, lambda: self.jx3api.qiyutongji(adventureName,server,limit))
|
||||||
|
|
||||||
|
async def qiyugonglue(self, event: AstrMessageEvent,name: str):
|
||||||
|
""" 攻略 奇遇"""
|
||||||
|
return await self.T2I_image_msg(event, lambda: self.jx3box.qiyugonglue(name))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -593,37 +642,18 @@ class MessageBuilder:
|
|||||||
return await self.plain_msg(event, lambda: self.jx3api.pianzhi(qq))
|
return await self.plain_msg(event, lambda: self.jx3api.pianzhi(qq))
|
||||||
|
|
||||||
|
|
||||||
async def juesheqiyu(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = ""):
|
|
||||||
""" 奇遇 角色名称 服务器"""
|
|
||||||
return await self.T2I_image_msg(event, lambda: self.jx3api.juesheqiyu(name, self.serverdefault(server)))
|
|
||||||
|
|
||||||
|
|
||||||
async def weizuoqiyu(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = ""):
|
|
||||||
""" 未做奇遇 角色名称 服务器"""
|
|
||||||
return await self.T2I_image_msg(event, lambda: self.jx3api.weizuoqiyu(name, self.serverdefault(server)))
|
|
||||||
|
|
||||||
|
|
||||||
async def qiyutongji(self, event: AstrMessageEvent,adventureName: str = "阴阳两界", server: str = ""):
|
|
||||||
""" 奇遇统计 奇遇名称 服务器"""
|
|
||||||
return await self.T2I_image_msg(event, lambda: self.jx3api.qiyutongji(adventureName,self.serverdefault(server)))
|
|
||||||
|
|
||||||
|
|
||||||
async def jinqiqiyu(self, event: AstrMessageEvent,server: str = ""):
|
|
||||||
""" 近期奇遇 服务器"""
|
|
||||||
return await self.T2I_image_msg(event, lambda: self.jx3api.jinqiqiyu(self.serverdefault(server)))
|
|
||||||
|
|
||||||
|
|
||||||
async def qiyuhuizong(self, event: AstrMessageEvent,num_or_server: str = "7", server: str = ""):
|
|
||||||
""" 奇遇汇总 天数 服务器"""
|
|
||||||
num = 7
|
|
||||||
target_server = server
|
|
||||||
|
|
||||||
if str(num_or_server).isdigit():
|
|
||||||
num = int(num_or_server)
|
|
||||||
else:
|
|
||||||
target_server = num_or_server
|
|
||||||
|
|
||||||
return await self.T2I_image_msg(event, lambda: self.jx3api.qiyuhuizong(self.serverdefault(target_server), num))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -653,9 +683,7 @@ class MessageBuilder:
|
|||||||
return await self.plain_msg(event, lambda: self.jx3api.jueshe(name, self.serverdefault(server)))
|
return await self.plain_msg(event, lambda: self.jx3api.jueshe(name, self.serverdefault(server)))
|
||||||
|
|
||||||
|
|
||||||
async def jueshemingpian(self, event: AstrMessageEvent, name: str = "飞翔大野猪", server: str = ""):
|
|
||||||
""" 名片 角色 服务器"""
|
|
||||||
return await self.plain_chain(event, lambda: self.jx3api.jueshemingpian(self.serverdefault(server), name))
|
|
||||||
|
|
||||||
|
|
||||||
async def jingnai(self, event: AstrMessageEvent, name: str = "飞翔大野猪", server: str = ""):
|
async def jingnai(self, event: AstrMessageEvent, name: str = "飞翔大野猪", server: str = ""):
|
||||||
@@ -663,14 +691,10 @@ class MessageBuilder:
|
|||||||
return await self.T2I_image_msg(event, lambda: self.jx3api.jingnai(name, self.serverdefault(server)))
|
return await self.T2I_image_msg(event, lambda: self.jx3api.jingnai(name, self.serverdefault(server)))
|
||||||
|
|
||||||
|
|
||||||
async def shuoyoumingpian(self, event: AstrMessageEvent, name: str = "飞翔大野猪", server: str = ""):
|
|
||||||
""" 所有名片 角色 服务器"""
|
|
||||||
return await self.plain_chain(event, lambda: self.jx3api.shuoyoumingpian( self.serverdefault(server),name))
|
|
||||||
|
|
||||||
|
|
||||||
async def shuijimingpian(self, event: AstrMessageEvent,force: str = "万花", body: str = "萝莉", server: str = ""):
|
|
||||||
""" 随机名片 职业 体型 服务器"""
|
|
||||||
return await self.image_msg(event, lambda: self.jx3api.shuijimingpian(force,body, self.serverdefault(server)))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -718,9 +742,7 @@ class MessageBuilder:
|
|||||||
return await self.plain_msg(event, lambda: self.jx3api.bagua(name))
|
return await self.plain_msg(event, lambda: self.jx3api.bagua(name))
|
||||||
|
|
||||||
|
|
||||||
async def qiyugonglue(self, event: AstrMessageEvent,name: str):
|
|
||||||
""" 奇遇攻略 奇遇名称"""
|
|
||||||
return await self.T2I_image_msg(event, lambda: self.jx3api.qiyugonglue(name))
|
|
||||||
|
|
||||||
|
|
||||||
async def hong(self, event: AstrMessageEvent,name: str = "易筋经"):
|
async def hong(self, event: AstrMessageEvent,name: str = "易筋经"):
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ from astrbot.api import AstrBotConfig
|
|||||||
from .core.sqlite import AsyncSQLiteDB
|
from .core.sqlite import AsyncSQLiteDB
|
||||||
from .core.jx3api_data import JX3APIService
|
from .core.jx3api_data import JX3APIService
|
||||||
from .core.aijx3_data import AIJX3Service
|
from .core.aijx3_data import AIJX3Service
|
||||||
|
from .core.jx3box_data import JX3BOXService
|
||||||
from .core.async_task import AsyncTask
|
from .core.async_task import AsyncTask
|
||||||
from .core.bilei_data import BiLeidata
|
from .core.bilei_data import BiLeidata
|
||||||
from .core.message import MessageBuilder
|
from .core.message import MessageBuilder
|
||||||
@@ -90,6 +91,9 @@ class Jx3ApiPlugin(Star):
|
|||||||
if self.aijx3:
|
if self.aijx3:
|
||||||
await self.aijx3.close()
|
await self.aijx3.close()
|
||||||
|
|
||||||
|
if self.jx3box:
|
||||||
|
await self.jx3box.close()
|
||||||
|
|
||||||
if self.local_sql_db:
|
if self.local_sql_db:
|
||||||
await self.local_sql_db.close()
|
await self.local_sql_db.close()
|
||||||
|
|
||||||
@@ -149,8 +153,9 @@ class Jx3ApiPlugin(Star):
|
|||||||
self.bilei = BiLeidata(self.local_sql_db)
|
self.bilei = BiLeidata(self.local_sql_db)
|
||||||
self.jx3api = JX3APIService(self.conf, self.plugin_sql_db, self.local_sql_db)
|
self.jx3api = JX3APIService(self.conf, self.plugin_sql_db, self.local_sql_db)
|
||||||
self.aijx3 = AIJX3Service(self.conf, self.plugin_sql_db, self.local_sql_db)
|
self.aijx3 = AIJX3Service(self.conf, self.plugin_sql_db, self.local_sql_db)
|
||||||
|
self.jx3box = JX3BOXService(self.conf, self.plugin_sql_db, self.local_sql_db)
|
||||||
self.jx3at = AsyncTask(cast(Context, self.context), self.conf, self.jx3api, self.local_sql_db)
|
self.jx3at = AsyncTask(cast(Context, self.context), self.conf, self.jx3api, self.local_sql_db)
|
||||||
self.jx3cmd = MessageBuilder(self.server, self.jx3api, self.aijx3, self.bilei, self.jx3at, self.icons)
|
self.jx3cmd = MessageBuilder(self.server, self.jx3api, self.aijx3, self.jx3box, self.bilei, self.jx3at, self.icons)
|
||||||
|
|
||||||
|
|
||||||
async def init_bilei_data(self):
|
async def init_bilei_data(self):
|
||||||
@@ -245,6 +250,16 @@ class Jx3ApiPlugin(Star):
|
|||||||
"帮战": self. jx3cmd.bangzhanjilu,
|
"帮战": self. jx3cmd.bangzhanjilu,
|
||||||
"沙盘": self. jx3cmd.shapan,
|
"沙盘": self. jx3cmd.shapan,
|
||||||
"诛恶": self. jx3cmd.zhueevent,
|
"诛恶": self. jx3cmd.zhueevent,
|
||||||
|
"名片": self. jx3cmd.jueshemingpian,
|
||||||
|
"全名片": self. jx3cmd.shuoyoumingpian,
|
||||||
|
"随机秀": self. jx3cmd.shuijimingpian,
|
||||||
|
"奇遇": self. jx3cmd.juesheqiyu,
|
||||||
|
"查询": self. jx3cmd.juesheqiyu,
|
||||||
|
"未出": self. jx3cmd.weizuoqiyu,
|
||||||
|
"汇总": self. jx3cmd.qiyuhuizong,
|
||||||
|
"近期": self. jx3cmd.jinqiqiyu,
|
||||||
|
"统计": self. jx3cmd.qiyutongji,
|
||||||
|
"攻略": self. jx3cmd.qiyugonglue,
|
||||||
|
|
||||||
|
|
||||||
"科举": self. jx3cmd.keju,
|
"科举": self. jx3cmd.keju,
|
||||||
@@ -268,7 +283,7 @@ class Jx3ApiPlugin(Star):
|
|||||||
"资历": self. jx3cmd.zili,
|
"资历": self. jx3cmd.zili,
|
||||||
"解密": self. jx3cmd.jiemi,
|
"解密": self. jx3cmd.jiemi,
|
||||||
|
|
||||||
"攻略": self. jx3cmd.qiyugonglue,
|
|
||||||
"宏": self. jx3cmd.hong,
|
"宏": self. jx3cmd.hong,
|
||||||
"配装": self. jx3cmd.peizhuang,
|
"配装": self. jx3cmd.peizhuang,
|
||||||
"百战": self. jx3cmd.baizhan,
|
"百战": self. jx3cmd.baizhan,
|
||||||
@@ -282,21 +297,21 @@ class Jx3ApiPlugin(Star):
|
|||||||
|
|
||||||
|
|
||||||
"骗子": self. jx3cmd.pianzhi,
|
"骗子": self. jx3cmd.pianzhi,
|
||||||
"奇遇": self. jx3cmd.juesheqiyu,
|
|
||||||
"未做奇遇": self. jx3cmd.weizuoqiyu,
|
|
||||||
"奇遇统计": self. jx3cmd.qiyutongji,
|
|
||||||
"近期奇遇": self. jx3cmd.jinqiqiyu,
|
|
||||||
"奇遇汇总": self. jx3cmd.qiyuhuizong,
|
|
||||||
|
|
||||||
"招募": self. jx3cmd.tuanduizhaomu,
|
"招募": self. jx3cmd.tuanduizhaomu,
|
||||||
"拜师": self. jx3cmd.baishi,
|
"拜师": self. jx3cmd.baishi,
|
||||||
"收徒": self. jx3cmd.shoutu,
|
"收徒": self. jx3cmd.shoutu,
|
||||||
|
|
||||||
"角色": self. jx3cmd.jueshe,
|
"角色": self. jx3cmd.jueshe,
|
||||||
"名片": self. jx3cmd.jueshemingpian,
|
|
||||||
"精耐": self. jx3cmd.jingnai,
|
"精耐": self. jx3cmd.jingnai,
|
||||||
"所有名片": self. jx3cmd.shuoyoumingpian,
|
|
||||||
"随机名片": self. jx3cmd.shuijimingpian,
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user