This commit is contained in:
qsc
2026-06-19 18:12:30 +08:00
parent 62917a0dbc
commit 104772ba2e
21 changed files with 2967 additions and 28 deletions
+806 -1
View File
@@ -11,6 +11,29 @@ from .request import APIClient
from .sqlite import AsyncSQLiteDB
from .fun_basic import load_template,gold_to_string,week_to_num,compare_date_str
ROLE_RANK_NAMES = {
"名士五十强",
"老江湖五十强",
"兵甲藏家五十强",
"名师五十强",
"阵营英雄五十强",
"薪火相传五十强",
"庐园广记一百强",
}
TONG_RANK_NAMES = {
"浩气神兵宝甲五十强",
"恶人神兵宝甲五十强",
"浩气爱心帮会五十强",
"恶人爱心帮会五十强",
"赛季恶人五十强",
"赛季浩气五十强",
"上周恶人五十强",
"上周浩气五十强",
"本周恶人五十强",
"本周浩气五十强",
}
class JX3Service:
def __init__(self, api_data_path: str, config: AstrBotConfig, sqlite: AsyncSQLiteDB):
# 加载API配置文件
@@ -701,6 +724,253 @@ class JX3Service:
return return_data
async def zhenyan(self, name: str) -> Dict[str, Any]:
"""阵眼"""
return_data = self._init_return_data()
# 1. 构造请求参数
params = {"name": name, "ticket": self.ticket, "token": self.token}
# 2. 调用基础请求
data: Optional[Dict[str, Any]] = await self._base_request(
"jx3_zhenyan", "GET", params=params
)
if not data or not isinstance(data, dict):
return_data["msg"] = "未查询到该心法阵眼信息"
return return_data
# 3. 处理返回数据
try:
items = data.get("data", [])
if not isinstance(items, list) or not items:
return_data["msg"] = "未查询到该心法阵眼信息"
return return_data
result_msg = f"{data.get('name', name)}-{data.get('skillName', '')}\n"
for item in items:
if not isinstance(item, dict):
continue
result_msg += f"{item.get('name', '')}{item.get('desc', '')}\n"
return_data["data"] = result_msg.rstrip()
except Exception as e:
logger.error(f"处理阵眼数据失败: {e}")
return_data["msg"] = "处理阵眼数据失败"
return return_data
return_data["code"] = 200
return return_data
async def qixue(self, name: str) -> Dict[str, Any]:
"""奇穴"""
return_data = self._init_return_data()
# 1. 构造请求参数
params = {"name": name, "ticket": self.ticket, "token": self.token}
# 2. 调用基础请求
data: Optional[List[Dict[str, Any]]] = await self._base_request(
"jx3_qixue", "GET", params=params
)
if not data or not isinstance(data, list):
return_data["msg"] = "未查询到该心法奇穴信息"
return return_data
# 3. 处理返回数据
try:
level_titles = {
1: "主奇穴",
2: "第一重",
3: "第二重",
4: "第三重",
5: "第四重",
6: "第五重",
7: "第六重",
8: "混池",
}
groups = []
for group in data:
if not isinstance(group, dict):
continue
level = group.get("level")
try:
level_key = int(level)
except (TypeError, ValueError):
level_key = 0
items = group.get("data", [])
if not isinstance(items, list) or not items:
continue
parsed_items = []
for item in items:
if not isinstance(item, dict):
continue
class_value = item.get("class")
is_active = class_value == 1 or str(class_value) == "1"
parsed_items.append({
"name": item.get("name", ""),
"icon": item.get("icon", ""),
"desc": item.get("desc", ""),
"class_text": "主动" if is_active else "被动",
"interval": item.get("interval", "") if is_active else "",
})
if parsed_items:
groups.append({
"level": level_key,
"title": level_titles.get(level_key, f"{level_key}"),
"talents": parsed_items,
})
if not groups:
return_data["msg"] = "未查询到该心法奇穴信息"
return return_data
groups.sort(key=lambda item: item["level"])
return_data["data"] = {
"name": name,
"groups": groups,
"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
# 4. 加载模板
try:
return_data["temp"] = await load_template("qixue.html")
except FileNotFoundError as e:
logger.error(f"加载模板失败: {e}")
return_data["msg"] = "系统错误:模板文件不存在"
return return_data
return_data["code"] = 200
return return_data
async def jineng(self, name: str) -> Dict[str, Any]:
"""技能"""
return_data = self._init_return_data()
params = {"name": name, "ticket": self.ticket, "token": self.token}
data: Optional[List[Dict[str, Any]]] = await self._base_request(
"jx3_jineng", "GET", params=params
)
if not data or not isinstance(data, list):
return_data["msg"] = "未查询到该心法技能信息"
return return_data
try:
groups = []
for group in data:
if not isinstance(group, dict):
continue
skills = group.get("data", [])
if not isinstance(skills, list) or not skills:
continue
parsed_skills = []
for skill in skills:
if not isinstance(skill, dict):
continue
parsed_skills.append({
"name": skill.get("name", ""),
"icon": skill.get("icon", ""),
"desc": skill.get("desc", ""),
"interval": skill.get("interval", ""),
"distance": skill.get("distance", ""),
"release_type": skill.get("releaseType", ""),
"weapon": skill.get("weapon", ""),
})
if parsed_skills:
groups.append({
"title": group.get("class", "其他技能"),
"skills": parsed_skills,
})
if not groups:
return_data["msg"] = "未查询到该心法技能信息"
return return_data
return_data["data"] = {
"name": name,
"groups": groups,
"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("jineng.html")
except FileNotFoundError as e:
logger.error(f"加载模板失败: {e}")
return_data["msg"] = "系统错误:模板文件不存在"
return return_data
return_data["code"] = 200
return return_data
async def zilipaixing(self, school: str, server: str) -> Dict[str, Any]:
"""资历排行"""
return_data = self._init_return_data()
params = {
"server": server,
"school": school,
"ticket": self.ticket,
"token": self.token,
}
data: Optional[List[Dict[str, Any]]] = await self._base_request(
"jx3_zilipaixing", "GET", params=params
)
if not data or not isinstance(data, list):
return_data["msg"] = "未查询到资历排行信息"
return return_data
try:
return_data["data"] = {
"items": data,
"school": school,
"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("zilipaixing.html")
except FileNotFoundError as e:
logger.error(f"加载模板失败: {e}")
return_data["msg"] = "系统错误:模板文件不存在"
return return_data
return_data["code"] = 200
return return_data
async def shaohua(self) -> Dict[str, Any]:
"""骚话"""
return_data = self._init_return_data()
@@ -1051,6 +1321,74 @@ class JX3Service:
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()
@@ -1100,6 +1438,131 @@ class JX3Service:
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
async def zhanji(self, name: str, server:str, mode:str) -> Dict[str, Any]:
"""战绩"""
return_data = self._init_return_data()
@@ -1162,6 +1625,52 @@ class JX3Service:
return return_data
async def mingjiantongji(self, mode: str = "33") -> Dict[str, Any]:
"""名剑统计"""
return_data = self._init_return_data()
mode = str(mode)
if mode not in {"22", "33", "55"}:
return_data["msg"] = "模式错误,可选值:22、33、55"
return return_data
# 1. 构造请求参数
params = {"mode": mode, "token": self.token, "ticket": self.ticket}
# 2. 调用基础请求
data: Optional[List[Dict[str, Any]]] = await self._base_request(
"jx3_mingjiantongji", "GET", 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 Exception as e:
logger.error(f"模板数据准备失败: {e}")
return_data["msg"] = "系统错误:模板渲染数据准备失败"
return return_data
# 4. 加载模板
try:
return_data["temp"] = await load_template("mingjiantongji.html")
except FileNotFoundError as e:
logger.error(f"加载模板失败: {e}")
return_data["msg"] = "系统错误:模板文件不存在"
return return_data
return_data["code"] = 200
return return_data
async def tuanduizhaomu(self, server: str, keyword: str) -> Dict[str, Any]:
"""团队招募"""
return_data = self._init_return_data()
@@ -1202,6 +1711,115 @@ class JX3Service:
return return_data
async def shitu(self, type_value: int, keyword: str, server: str) -> Dict[str, Any]:
"""师徒招募"""
return_data = self._init_return_data()
if type_value not in {1, 2}:
return_data["msg"] = "师徒查询类型错误"
return return_data
# 1. 构造请求参数
params = {"type": type_value, "server": server, "keyword": keyword, "token": self.token}
# 2. 调用基础请求
data: Optional[Dict[str, Any]] = await self._base_request(
"jx3_shitu", "GET", 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 Exception as e:
logger.error(f"数据处理时出错: {e}")
return_data["msg"] = "处理接口返回信息时出错"
return return_data
# 4. 加载模板
try:
return_data["temp"] = await load_template("shitu.html")
except FileNotFoundError as e:
logger.error(f"加载模板失败: {e}")
return_data["msg"] = "系统错误:模板文件不存在"
return return_data
return_data["code"] = 200
return return_data
async def rank_statistical(self, name: str, server: str) -> Dict[str, Any]:
"""各类风云录榜单"""
return_data = self._init_return_data()
if name in ROLE_RANK_NAMES:
template_name = "rank_role.html"
elif name in TONG_RANK_NAMES:
template_name = "rank_tong.html"
else:
return_data["msg"] = "榜单名称错误"
return return_data
# 1. 构造请求参数
params = {"server": server, "name": name, "token": self.token}
# 2. 调用基础请求
data: Optional[Dict[str, Any]] = await self._base_request(
"jx3_rank_statistical", "GET", params=params
)
if not data or not isinstance(data, dict):
return_data["msg"] = "未查询到榜单信息"
return return_data
# 3. 处理返回数据
try:
items = data.get("data", [])
if not isinstance(items, list) or not items:
return_data["msg"] = "未查询到榜单信息"
return return_data
return_data["data"] = {
"items": items,
"server": data.get("server", server),
"rank_name": data.get("name", name),
"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
# 4. 加载模板
try:
return_data["temp"] = await load_template(template_name)
except FileNotFoundError as e:
logger.error(f"加载模板失败: {e}")
return_data["msg"] = "系统错误:模板文件不存在"
return return_data
return_data["code"] = 200
return return_data
async def jueshe(self,name: str, server: str) -> Dict[str, Any]:
"""角色"""
return_data = self._init_return_data()
@@ -1243,7 +1861,129 @@ class JX3Service:
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]:
"""百战精耐"""
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_jingnai", "GET", params=params
)
if not data or not isinstance(data, dict):
return_data["msg"] = "未查询到角色精耐信息"
return return_data
# 3. 处理返回数据
try:
items = data.get("skill_list", [])
if not isinstance(items, list) or not items:
return_data["msg"] = "未查询到技能信息"
return return_data
color_map = {
7: "黑色",
6: "紫色",
5: "红色",
4: "绿色",
3: "蓝色",
2: "黄色",
0: "",
}
for item in items:
if not isinstance(item, dict):
continue
color = item.get("skill_color")
try:
color_key = int(color)
except (TypeError, ValueError):
color_key = None
item["skill_color_text"] = color_map.get(color_key, str(color) if color is not None else "")
update_time = data.get("update_time")
if update_time:
try:
update_time = datetime.fromtimestamp(int(update_time)).strftime("%Y-%m-%d %H:%M:%S")
except (TypeError, ValueError, OSError):
update_time = str(update_time)
else:
update_time = ""
return_data["data"] = {
"server": data.get("server", server),
"role_name": data.get("role_name", name),
"skill_energy": data.get("skill_energy", ""),
"skill_stamina": data.get("skill_stamina", ""),
"skill_count": data.get("skill_count", len(items)),
"items": items,
"update_time": update_time
}
except Exception as e:
logger.error(f"处理精耐数据失败: {e}")
return_data["msg"] = "处理精耐数据失败"
return return_data
# 4. 加载模板
try:
return_data["temp"] = await load_template("jingnai.html")
except FileNotFoundError as e:
logger.error(f"加载模板失败: {e}")
return_data["msg"] = "系统错误:模板文件不存在"
return return_data
return_data["code"] = 200
return return_data
async def shuoyoumingpian(self, server: str, name: str) -> Dict[str, Any]:
"""所有名片"""
return_data = self._init_return_data()
# 1. 构造请求参数
@@ -1492,6 +2232,71 @@ class JX3Service:
return return_data
return return_data
async def diaoluo(self, name: str, limit: int = 20, server: str = "") -> Dict[str, Any]:
"""物品掉落记录"""
return_data = self._init_return_data()
try:
limit = int(limit)
except (TypeError, ValueError):
return_data["msg"] = "数量必须是数字"
return return_data
if limit < 1 or limit > 100:
return_data["msg"] = "掉落记录数量需在 1-100 之间"
return return_data
# 1. 构造请求参数
params = {"server": server, "name": name, "limit": limit, "token": self.token}
# 2. 调用基础请求
data: Optional[List[Dict[str, Any]]] = await self._base_request(
"jx3_diaoluo", "GET", params=params
)
if not data or not isinstance(data, list):
return_data["msg"] = "未查询到掉落记录"
return return_data
# 3. 处理返回数据
try:
for item in data:
if not isinstance(item, dict):
continue
drop_time = item.get("time")
if drop_time:
try:
item["time"] = datetime.fromtimestamp(int(drop_time)).strftime("%Y-%m-%d %H:%M:%S")
except (TypeError, ValueError, OSError):
item["time"] = str(drop_time)
else:
item["time"] = ""
return_data["data"] = {
"items": data,
"name": name,
"limit": limit,
"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
# 4. 模板渲染
try:
return_data["temp"] = await load_template("diaoluo.html")
return_data["code"] = 200
except FileNotFoundError as e:
logger.error(f"加载模板失败: {e}")
return_data["msg"] = "系统错误:模板文件不存在"
return return_data
return return_data
async def bagua(self, type: str) -> Dict[str, Any]:
+172 -1
View File
@@ -262,6 +262,26 @@ class MessageBuilder:
return await self.T2I_image_msg(event, self.jx3api.xiaoyao)
async def jx3_zhenyan(self, event: AstrMessageEvent, name: str):
"""剑三 阵眼 心法"""
return await self.plain_msg(event, lambda: self.jx3api.zhenyan(name))
async def jx3_qixue(self, event: AstrMessageEvent, name: str):
"""剑三 奇穴 心法"""
return await self.T2I_image_msg(event, lambda: self.jx3api.qixue(name))
async def jx3_jineng(self, event: AstrMessageEvent, name: str):
"""剑三 技能 心法"""
return await self.T2I_image_msg(event, lambda: self.jx3api.jineng(name))
async def jx3_zilipaixing(self, event: AstrMessageEvent, school: str, server: str = ""):
"""剑三 资历排行 职业 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.zilipaixing(school, self.serverdefault(server)))
async def jx3_shaohua(self, event: AstrMessageEvent,):
"""剑三 骚话"""
return await self.plain_msg(event, self.jx3api.shaohua)
@@ -307,11 +327,34 @@ class MessageBuilder:
return await self.T2I_image_msg(event, lambda: self.jx3api.juesheqiyu(name, self.serverdefault(server)))
async def jx3_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 jx3_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 jx3_jinqiqiyu(self, event: AstrMessageEvent,server: str = ""):
"""剑三 近期奇遇 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.jinqiqiyu(self.serverdefault(server)))
async def jx3_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))
async def jx3_zhanji(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = "", mode:str = "33"):
"""剑三 战绩 角色 服务器 类型"""
return await self.T2I_image_msg(event, lambda: self.jx3api.zhanji(name, self.serverdefault(server),mode))
@@ -322,11 +365,116 @@ class MessageBuilder:
return await self.T2I_image_msg(event, lambda: self.jx3api.mingjianpaihang(limit,mode))
async def jx3_mingjiantongji(self, event: AstrMessageEvent,mode: str = "33"):
"""剑三 名剑统计 模式"""
return await self.T2I_image_msg(event, lambda: self.jx3api.mingjiantongji(mode))
async def jx3_tuanduizhaomu(self, event: AstrMessageEvent,keyword: str = "25人普通会战弓月城", server: str = ""):
"""剑三 招募 副本 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.tuanduizhaomu( self.serverdefault(server),keyword))
async def jx3_baishi(self, event: AstrMessageEvent,keyword: str = "", server: str = ""):
"""剑三 拜师 搜索关键词 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.shitu(2, keyword, self.serverdefault(server)))
async def jx3_shoutu(self, event: AstrMessageEvent,keyword: str = "", server: str = ""):
"""剑三 收徒 搜索关键词 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.shitu(1, keyword, self.serverdefault(server)))
async def jx3_rank_statistical(self, event: AstrMessageEvent, rank_name: str, server: str = ""):
"""剑三 各类榜单 榜单名称 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.rank_statistical(rank_name, self.serverdefault(server)))
async def jx3_mingshiwushiqiang(self, event: AstrMessageEvent, server: str = ""):
"""剑三 名士五十强 服务器"""
return await self.jx3_rank_statistical(event, "名士五十强", server)
async def jx3_laojianghuwushiqiang(self, event: AstrMessageEvent, server: str = ""):
"""剑三 老江湖五十强 服务器"""
return await self.jx3_rank_statistical(event, "老江湖五十强", server)
async def jx3_bingjiacangjiawushiqiang(self, event: AstrMessageEvent, server: str = ""):
"""剑三 兵甲藏家五十强 服务器"""
return await self.jx3_rank_statistical(event, "兵甲藏家五十强", server)
async def jx3_mingshiwushiqiang_mentor(self, event: AstrMessageEvent, server: str = ""):
"""剑三 名师五十强 服务器"""
return await self.jx3_rank_statistical(event, "名师五十强", server)
async def jx3_zhengyingyingxiongwushiqiang(self, event: AstrMessageEvent, server: str = ""):
"""剑三 阵营英雄五十强 服务器"""
return await self.jx3_rank_statistical(event, "阵营英雄五十强", server)
async def jx3_xinhuoxiangchuanwushiqiang(self, event: AstrMessageEvent, server: str = ""):
"""剑三 薪火相传五十强 服务器"""
return await self.jx3_rank_statistical(event, "薪火相传五十强", server)
async def jx3_luyuanguangjiyibaiqiang(self, event: AstrMessageEvent, server: str = ""):
"""剑三 庐园广记一百强 服务器"""
return await self.jx3_rank_statistical(event, "庐园广记一百强", server)
async def jx3_haoqishenbingbaojiawushiqiang(self, event: AstrMessageEvent, server: str = ""):
"""剑三 浩气神兵宝甲五十强 服务器"""
return await self.jx3_rank_statistical(event, "浩气神兵宝甲五十强", server)
async def jx3_erenshenbingbaojiawushiqiang(self, event: AstrMessageEvent, server: str = ""):
"""剑三 恶人神兵宝甲五十强 服务器"""
return await self.jx3_rank_statistical(event, "恶人神兵宝甲五十强", server)
async def jx3_haoqiaixinbanghuiwushiqiang(self, event: AstrMessageEvent, server: str = ""):
"""剑三 浩气爱心帮会五十强 服务器"""
return await self.jx3_rank_statistical(event, "浩气爱心帮会五十强", server)
async def jx3_erenaixinbanghuiwushiqiang(self, event: AstrMessageEvent, server: str = ""):
"""剑三 恶人爱心帮会五十强 服务器"""
return await self.jx3_rank_statistical(event, "恶人爱心帮会五十强", server)
async def jx3_saijierenwushiqiang(self, event: AstrMessageEvent, server: str = ""):
"""剑三 赛季恶人五十强 服务器"""
return await self.jx3_rank_statistical(event, "赛季恶人五十强", server)
async def jx3_saijihaoqiwushiqiang(self, event: AstrMessageEvent, server: str = ""):
"""剑三 赛季浩气五十强 服务器"""
return await self.jx3_rank_statistical(event, "赛季浩气五十强", server)
async def jx3_shangzhouerenwushiqiang(self, event: AstrMessageEvent, server: str = ""):
"""剑三 上周恶人五十强 服务器"""
return await self.jx3_rank_statistical(event, "上周恶人五十强", server)
async def jx3_shangzhouhaoqiwushiqiang(self, event: AstrMessageEvent, server: str = ""):
"""剑三 上周浩气五十强 服务器"""
return await self.jx3_rank_statistical(event, "上周浩气五十强", server)
async def jx3_benzhouerenwushiqiang(self, event: AstrMessageEvent, server: str = ""):
"""剑三 本周恶人五十强 服务器"""
return await self.jx3_rank_statistical(event, "本周恶人五十强", server)
async def jx3_benzhouhaoqiwushiqiang(self, event: AstrMessageEvent, server: str = ""):
"""剑三 本周浩气五十强 服务器"""
return await self.jx3_rank_statistical(event, "本周浩气五十强", server)
async def jx3_jueshe(self, event: AstrMessageEvent,name: str, server: str = ""):
"""剑三 角色 名称 服务器"""
return await self.plain_msg(event, lambda: self.jx3api.jueshe(name, self.serverdefault(server)))
@@ -334,7 +482,17 @@ class MessageBuilder:
async def jx3_jueshemingpian(self, event: AstrMessageEvent, name: str = "飞翔大野猪", server: str = ""):
"""剑三 名片 角色 服务器"""
return await self.plain_chain(event, lambda: self.jx3api.jueshemingpian( self.serverdefault(server),name))
return await self.plain_chain(event, lambda: self.jx3api.jueshemingpian(self.serverdefault(server), name))
async def jx3_jingnai(self, event: AstrMessageEvent, name: str = "飞翔大野猪", server: str = ""):
"""剑三 精耐 角色 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.jingnai(name, self.serverdefault(server)))
async def jx3_shuoyoumingpian(self, event: AstrMessageEvent, name: str = "飞翔大野猪", server: str = ""):
"""剑三 所有名片 角色 服务器"""
return await self.plain_chain(event, lambda: self.jx3api.shuoyoumingpian( self.serverdefault(server),name))
async def jx3_shuijimingpian(self, event: AstrMessageEvent,force: str = "万花", body: str = "萝莉", server: str = ""):
@@ -362,6 +520,19 @@ class MessageBuilder:
return await self.T2I_image_msg(event, lambda: self.jx3api.jiaoyihang(Name, self.serverdefault(server)))
async def jx3_diaoluo(self, event: AstrMessageEvent, name: str = "玄晶", limit_or_server: str = "20", server: str = ""):
"""剑三 掉落 物品名称 数量 服务器"""
limit = 20
target_server = server
if str(limit_or_server).isdigit():
limit = int(limit_or_server)
else:
target_server = limit_or_server
return await self.T2I_image_msg(event, lambda: self.jx3api.diaoluo(name, limit, self.serverdefault(target_server)))
async def jx3_bagua(self, event: AstrMessageEvent,name: str = "818"):
"""剑三 八卦 类型"""
return await self.plain_msg(event, lambda: self.jx3api.bagua(name))