This commit is contained in:
2026-01-31 18:20:58 +08:00
parent fee04594a2
commit 57857aa84e
5 changed files with 184 additions and 187 deletions
+55 -88
View File
@@ -43,12 +43,27 @@ class JX3Commands(Star):
data= await action() data= await action()
try: try:
if data["code"] == 200: if data["code"] == 200:
return event.plain_result(data["data"]) await event.send( event.plain_result(data["data"]))
else: else:
return event.plain_result(data["msg"]) await event.send(event.plain_result(data["msg"]))
except Exception as e: except Exception as e:
logger.error(f"功能函数执行错误: {e}") logger.error(f"功能函数执行错误: {e}")
return event.plain_result("猪脑过载,请稍后再试") await event.send(event.plain_result("猪脑过载,请稍后再试"))
async def T2I_image_msg(self, event: AstrMessageEvent, action):
"""最终将数据渲染成图片发送"""
data = await action()
try:
if data["code"] == 200:
url = await self.html_render(data["temp"], data["data"], options={})
await event.send(event.image_result(url))
else:
await event.send(event.plain_result(data["msg"]))
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
await event.send(event.plain_result("猪脑过载,请稍后再试"))
async def image_msg(self, event: AstrMessageEvent, action): async def image_msg(self, event: AstrMessageEvent, action):
@@ -56,19 +71,18 @@ class JX3Commands(Star):
data = await action() data = await action()
try: try:
if data["code"] == 200: if data["code"] == 200:
url = await self.html_render(data["temp"], data["data"], options={}) await event.send(event.image_result(data["data"]))
return event.image_result(url)
else: else:
return event.plain_result(data["msg"]) await event.send(event.plain_result(data["msg"]))
except Exception as e: except Exception as e:
logger.error(f"功能函数执行错误: {e}") logger.error(f"功能函数执行错误: {e}")
return event.plain_result("猪脑过载,请稍后再试") await event.send(event.plain_result("猪脑过载,请稍后再试"))
async def jx3_helps(self, event: AstrMessageEvent): async def jx3_helps(self, event: AstrMessageEvent):
"""剑三 功能""" """剑三 功能"""
return await self.image_msg(event, self.jx3fun.helps) return await self.T2I_image_msg(event, self.jx3fun.helps)
async def jx3_richang(self, event: AstrMessageEvent,server: str = "" ,num: int = 0): async def jx3_richang(self, event: AstrMessageEvent,server: str = "" ,num: int = 0):
@@ -78,12 +92,12 @@ class JX3Commands(Star):
async def jx3_richangyuche(self, event: AstrMessageEvent): async def jx3_richangyuche(self, event: AstrMessageEvent):
"""剑三 日常预测""" """剑三 日常预测"""
return await self.image_msg(event, self.jx3fun.richangyuche) return await self.T2I_image_msg(event, self.jx3fun.richangyuche)
async def jx3_xingxiashijian(self, event: AstrMessageEvent,name: str = "穹野卫"): async def jx3_xingxiashijian(self, event: AstrMessageEvent,name: str = "穹野卫"):
"""剑三 名望""" """剑三 名望"""
return await self.image_msg(event, lambda: self.jx3fun.xingxiashijian(name)) return await self.T2I_image_msg(event, lambda: self.jx3fun.xingxiashijian(name))
async def jx3_kaifu(self, event: AstrMessageEvent,server: str = ""): async def jx3_kaifu(self, event: AstrMessageEvent,server: str = ""):
@@ -93,7 +107,7 @@ class JX3Commands(Star):
async def jx3_zhuangtai(self, event: AstrMessageEvent): async def jx3_zhuangtai(self, event: AstrMessageEvent):
"""剑三 状态""" """剑三 状态"""
return await self.image_msg(event, self.jx3fun.zhuangtai) return await self.T2I_image_msg(event, self.jx3fun.zhuangtai)
async def jx3_shaohua(self, event: AstrMessageEvent,): async def jx3_shaohua(self, event: AstrMessageEvent,):
@@ -118,55 +132,32 @@ class JX3Commands(Star):
async def jx3_huajia(self, event: AstrMessageEvent, name: str= "", server: str = "", map: str= ""): async def jx3_huajia(self, event: AstrMessageEvent, name: str= "", server: str = "", map: str= ""):
"""剑三 花价 名称 服务器 地图""" """剑三 花价 名称 服务器 地图"""
return await self.image_msg(event, lambda: self.jx3fun.huajia(self.serverdefault(server),name,map)) return await self.T2I_image_msg(event, lambda: self.jx3fun.huajia(self.serverdefault(server),name,map))
async def jx3_zhuangshi(self, event: AstrMessageEvent, name: str): async def jx3_zhuangshi(self, event: AstrMessageEvent, name: str):
"""剑三 装饰 名称""" """剑三 装饰 名称"""
return await self.image_msg(event, lambda: self.jx3fun.zhuangshi(name)) return await self.T2I_image_msg(event, lambda: self.jx3fun.zhuangshi(name))
async def jx3_qiwu(self, event: AstrMessageEvent, name: str): async def jx3_qiwu(self, event: AstrMessageEvent, name: str):
"""剑三 器物 地图名称""" """剑三 器物 地图名称"""
return await self.image_msg(event, lambda: self.jx3fun.qiwu(name)) return await self.T2I_image_msg(event, lambda: self.jx3fun.qiwu(name))
async def jx3_shapan(self, event: AstrMessageEvent,server: str = ""): async def jx3_shapan(self, event: AstrMessageEvent,server: str = ""):
"""剑三 沙盘 服务器""" """剑三 沙盘 服务器"""
try: return await self.image_msg(event, lambda: self.jx3fun.shapan(self.serverdefault(server)))
data= await self.jx3fun.shapan(self.serverdefault(server))
if data["code"] == 200:
yield event.image_result(data["data"])
else:
yield event.plain_result(data["msg"])
return
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
yield event.plain_result("猪脑过载,请稍后再试")
async def jx3_qufuqiyu(self, event: AstrMessageEvent,adventureName: str = "阴阳两界", server: str = ""): async def jx3_qufuqiyu(self, event: AstrMessageEvent,adventureName: str = "阴阳两界", server: str = ""):
"""剑三 奇遇统计 奇遇名称 服务器""" """剑三 奇遇统计 奇遇名称 服务器"""
return await self.image_msg(event, lambda: self.jx3fun.qiyu(adventureName,self.serverdefault(server))) return await self.T2I_image_msg(event, lambda: self.jx3fun.qiyu(adventureName,self.serverdefault(server)))
async def jx3_qiyugonglue(self, event: AstrMessageEvent,name: str): async def jx3_qiyugonglue(self, event: AstrMessageEvent,name: str):
"""剑三 奇遇攻略 奇遇名称""" """剑三 奇遇攻略 奇遇名称"""
try: return await self.T2I_image_msg(event, lambda: self.jx3fun.qiyugonglue(name))
data= await self.jx3fun.qiyugonglue(name)
if data["code"] == 200:
url = await self.html_render(data["temp"], {}, options={})
chain = [
Comp.Plain(f"{data['data']} \n"),
Comp.Image.fromURL(f"{url}")
]
yield event.chain_result(chain)
else:
yield event.plain_result(data["msg"])
return
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
yield event.plain_result("猪脑过载,请稍后再试")
async def jx3_hong(self, event: AstrMessageEvent, kungfu: str = "易筋经"): async def jx3_hong(self, event: AstrMessageEvent, kungfu: str = "易筋经"):
@@ -175,14 +166,7 @@ class JX3Commands(Star):
try: try:
data = await self.jx3fun.hong1(kungfu) data = await self.jx3fun.hong1(kungfu)
if data["code"] == 200: if data["code"] == 200:
yield event.plain_result(data["msg"]) await event.send(event.plain_result(data["msg"]))
else:
yield event.plain_result(f"未搜索到与【{kungfu}】相关的宏")
return
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
yield event.plain_result("猪脑过载,请稍后再试")
# 获取用户ID # 获取用户ID
user_id = event.get_sender_id() user_id = event.get_sender_id()
# 等等用户回复 # 等等用户回复
@@ -237,92 +221,75 @@ class JX3Commands(Star):
try: try:
await macro_select_waiter(event) await macro_select_waiter(event)
except TimeoutError: except TimeoutError:
yield event.plain_result("选择宏超时,已结束会话") await event.send(event.plain_result("选择宏超时,已结束会话"))
except Exception: except Exception:
logger.error("宏选择发生异常", exc_info=True) logger.error("宏选择发生异常", exc_info=True)
else:
await event.send(event.plain_result(f"未搜索到与【{kungfu}】相关的宏"))
return
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
await event.send(event.plain_result("猪脑过载,请稍后再试"))
async def jx3_peizhuang(self, event: AstrMessageEvent,name: str = "易筋经", tags: str = ""):
"""剑三 配装 心法"""
return await self.plain_msg(event, lambda: self.jx3fun.peizhuang( name,tags))
async def jx3_jinjia(self, event: AstrMessageEvent,server: str = "", limit:str = "15"): async def jx3_jinjia(self, event: AstrMessageEvent,server: str = "", limit:str = "15"):
"""剑三 金价 服务器""" """剑三 金价 服务器"""
return await self.image_msg(event, lambda: self.jx3fun.jinjia( self.serverdefault(server),limit)) return await self.T2I_image_msg(event, lambda: self.jx3fun.jinjia( self.serverdefault(server),limit))
async def jx3_wujia(self, event: AstrMessageEvent,Name: str = "秃盒", server: str = ""): async def jx3_wujia(self, event: AstrMessageEvent,Name: str = "秃盒", server: str = ""):
"""剑三 物价 外观名称""" """剑三 物价 外观名称"""
return await self.image_msg(event, lambda: self.jx3fun.wujia(Name, self.serverdefault(server))) return await self.T2I_image_msg(event, lambda: self.jx3fun.wujia(Name, self.serverdefault(server)))
async def jx3_jiaoyihang(self, event: AstrMessageEvent,Name: str = "守缺式",server: str = ""): async def jx3_jiaoyihang(self, event: AstrMessageEvent,Name: str = "守缺式",server: str = ""):
"""剑三 交易行 物品名称 服务器""" """剑三 交易行 物品名称 服务器"""
return await self.image_msg(event, lambda: self.jx3fun.jiaoyihang(Name, self.serverdefault(server))) return await self.T2I_image_msg(event, lambda: self.jx3fun.jiaoyihang(Name, self.serverdefault(server)))
async def jx3_jueshemingpian(self, event: AstrMessageEvent, name: str = "飞翔大野猪", server: str = ""): async def jx3_jueshemingpian(self, event: AstrMessageEvent, name: str = "飞翔大野猪", server: str = ""):
"""剑三 名片 角色 服务器""" """剑三 名片 角色 服务器"""
try: return await self.image_msg(event, lambda: self.jx3fun.jueshemingpian( self.serverdefault(server),name))
data= await self.jx3fun.jueshemingpian( self.serverdefault(server),name)
if data["code"] == 200:
chain = [
Comp.Plain(f"{data['data']['serverName']}--{data['data']['roleName']} \n"),
Comp.Image.fromURL(f"{data['data']['showAvatar']}")
]
yield event.chain_result(chain)
else:
yield event.plain_result(data["msg"])
return
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
yield event.plain_result("猪脑过载,请稍后再试")
async def jx3_shuijimingpian(self, event: AstrMessageEvent,force: str = "万花", body: str = "萝莉", server: str = ""): async def jx3_shuijimingpian(self, event: AstrMessageEvent,force: str = "万花", body: str = "萝莉", server: str = ""):
"""剑三 随机名片 职业 体型 服务器""" """剑三 随机名片 职业 体型 服务器"""
try: return await self.image_msg(event, lambda: self.jx3fun.shuijimingpian(force,body, self.serverdefault(server)))
data= await self.jx3fun.shuijimingpian(force,body, self.serverdefault(server))
if data["code"] == 200:
chain = [
Comp.Plain(f"{data['data']['serverName']}--{data['data']['roleName']} \n"),
Comp.Image.fromURL(f"{data['data']['showAvatar']}"),
Comp.Plain(f"{force}--{body} \n")
]
yield event.chain_result(chain)
else:
yield event.plain_result(data["msg"])
return
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
yield event.plain_result("猪脑过载,请稍后再试")
async def jx3_yanhuachaxun(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = ""): async def jx3_yanhuachaxun(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = ""):
"""剑三 烟花 角色 服务器""" """剑三 烟花 角色 服务器"""
return await self.image_msg(event, lambda: self.jx3fun.yanhuachaxun( self.serverdefault(server),name)) return await self.T2I_image_msg(event, lambda: self.jx3fun.yanhuachaxun( self.serverdefault(server),name))
async def jx3_dilujilu(self, event: AstrMessageEvent,server: str = ""): async def jx3_dilujilu(self, event: AstrMessageEvent,server: str = ""):
"""剑三 的卢 服务器""" """剑三 的卢 服务器"""
return await self.image_msg(event, lambda: self.jx3fun.dilujilu( self.serverdefault(server))) return await self.T2I_image_msg(event, lambda: self.jx3fun.dilujilu( self.serverdefault(server)))
async def jx3_tuanduizhaomu(self, event: AstrMessageEvent,keyword: str = "25人普通会战弓月城", server: str = ""): async def jx3_tuanduizhaomu(self, event: AstrMessageEvent,keyword: str = "25人普通会战弓月城", server: str = ""):
"""剑三 招募 副本 服务器""" """剑三 招募 副本 服务器"""
return await self.image_msg(event, lambda: self.jx3fun.tuanduizhaomu( self.serverdefault(server),keyword)) return await self.T2I_image_msg(event, lambda: self.jx3fun.tuanduizhaomu( self.serverdefault(server),keyword))
async def jx3_zhanji(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = "", mode:str = "33"): async def jx3_zhanji(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = "", mode:str = "33"):
"""剑三 战绩 角色 服务器 类型""" """剑三 战绩 角色 服务器 类型"""
return await self.image_msg(event, lambda: self.jx3fun.zhanji(name, self.serverdefault(server),mode)) return await self.T2I_image_msg(event, lambda: self.jx3fun.zhanji(name, self.serverdefault(server),mode))
async def jx3_qiyu(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = ""): async def jx3_qiyu(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = ""):
"""剑三 奇遇 角色名称 服务器""" """剑三 奇遇 角色名称 服务器"""
return await self.image_msg(event, lambda: self.jx3fun.juesheqiyu(name, self.serverdefault(server))) return await self.T2I_image_msg(event, lambda: self.jx3fun.juesheqiyu(name, self.serverdefault(server)))
async def jx3_zhengyingpaimai(self, event: AstrMessageEvent,name: str = "玄晶", server: str = ""): async def jx3_zhengyingpaimai(self, event: AstrMessageEvent,name: str = "玄晶", server: str = ""):
"""剑三 阵营拍卖 物品名称 服务器""" """剑三 阵营拍卖 物品名称 服务器"""
return await self.image_msg(event, lambda: self.jx3fun.zhengyingpaimai( self.serverdefault(server), name)) return await self.T2I_image_msg(event, lambda: self.jx3fun.zhengyingpaimai( self.serverdefault(server), name))
async def jx3_fuyaojjiutian(self, event: AstrMessageEvent,server: str = ""): async def jx3_fuyaojjiutian(self, event: AstrMessageEvent,server: str = ""):
+75 -47
View File
@@ -826,7 +826,7 @@ class JX3Service:
return return_data return return_data
# 3. 处理返回数据 (直接提取图片 URL) # 3. 处理返回数据 (直接提取图片 URL)
return_data["data"] = data return_data["data"] = data['showAvatar']
return_data["code"] = 200 return_data["code"] = 200
return return_data return return_data
@@ -849,7 +849,7 @@ class JX3Service:
return return_data return return_data
# 3. 处理返回数据 (直接提取图片 URL) # 3. 处理返回数据 (直接提取图片 URL)
return_data["data"] = data return_data["data"] = data['showAvatar']
return_data["code"] = 200 return_data["code"] = 200
return return_data return return_data
@@ -1001,7 +1001,7 @@ class JX3Service:
# 角色名片获取 # 角色名片获取
datamp = await self.jueshemingpian(server,name) datamp = await self.jueshemingpian(server,name)
if datamp["code"] == 200: if datamp["code"] == 200:
data["showAvatar"] = datamp['data']['showAvatar'] data["showAvatar"] = datamp['data']
logger.info("名片获取完成") logger.info("名片获取完成")
else: else:
data["showAvatar"] = "" data["showAvatar"] = ""
@@ -1299,7 +1299,7 @@ class JX3Service:
# 4. 处理数据 # 4. 处理数据
try: try:
return_data["data"] = data2["post"]["title"] return_data["data"] = {}
content = data2["post"]["content"] content = data2["post"]["content"]
return_data["temp"] = content return_data["temp"] = content
except Exception as e: except Exception as e:
@@ -1386,69 +1386,97 @@ class JX3Service:
return return_data return return_data
async def peizhuang(self, name: str = "易筋经") -> Dict[str, Any]: async def peizhuang(self, name: str, tags: str) -> Dict[str, Any]:
"""配装""" """配装"""
return_data = self._init_return_data() return_data = self._init_return_data()
name_map = { name_map = {
"冰心":10081, "冰心":10081,
"云裳心经":10080, "云裳心经":10080,
"奶秀":10080,
"花间游":10021, "花间游":10021,
"离经易道":10028, "离经易道":10028,
"冰心诀":10081, "奶花":10028,
"冰心诀":10081, "毒经":10175,
"冰心":10081, "补天":10176,
"冰心诀":10081, "奶毒":10176,
"冰心诀":10081, "莫问":10447,
"冰心诀":10081, "相知":10448,
"冰心诀":10081, "奶歌":10448,
"冰心诀":10081, "无方":10627,
"冰心诀":10081, "灵素":10626,
"冰心诀":10081, "奶药":10626,
"冰心诀":10081, "傲血战意":10026,
"冰心诀":10081, "铁牢律":10062,
"冰心诀":10081, "策T":10062,
"冰心诀":10081, "易筋经":10003,
"冰心诀":10081, "洗髓经":10002,
"冰心诀":10081, "秃T":10002,
"冰心":10081, "焚影圣":10242,
"冰心诀":10081, "明尊琉璃体":10243,
"冰心诀":10081, "喵T":10243,
"冰心诀":10081, "分山劲":10390,
"冰心诀":10081, "铁骨衣":10389,
"冰心诀":10081, "苍T":10389,
"冰心诀":10081, "紫霞功":10014,
"冰心诀":10081, "气纯":10014,
"冰心诀":10081, "太虚剑意":10015,
"冰心诀":10081, "剑纯":10015,
"冰心诀":10081 "天罗诡道":10225,
"惊羽诀":10224,
"问水诀":10144,
"藏剑":10144,
"笑尘诀":10268,
"丐帮":10268,
"北傲诀":10464,
"霸刀":10464,
"凌海诀":10533,
"蓬莱":10533,
"隐龙诀":10585,
"凌雪":10585,
"太玄经":10615,
"衍天":10615,
"孤锋诀":10698,
"刀宗":10698,
"山海心诀":10756,
"万灵":10698,
"周天功":10786,
"段式":10786,
"幽罗引":10821,
"无相楼":10821
} }
mount = name_map.get(name,None)
if mount == None:
return_data["msg"] = "未找到该心法配装"
return return_data
logger.debug(mount)
# 1. 构造请求参数 # 1. 构造请求参数
params = {"per": "10","page": "1","tags": "","client": "20","global_level": "130","mount": "","star": "1"} params = {"mount": mount, "tags": tags}
# 2. 调用基础请求 # 2. 调用基础请求
data: Optional[Dict[str, Any]] = await self._base_request( data: Optional[Dict[str, Any]] = await self._base_request(
"jx3_bagua", "GET", params=params "jx3box_peizhuang", "GET", params=params
) )
logger.debug(data)
# 验证数据
if not data:
return_data["msg"] = "配装数据获取异常"
return return_data
# 3. 处理返回数据 # 3. 处理返回数据
try: try:
if not data: result_msg = f"{name}--配装\n"
result_msg = f"未找到相关 {type} 记录。\n" for item in data["list"]:
result_msg += f"可选范围:818 616 鬼网三 鬼网3 树洞 记录 教程 街拍 故事 避雷 吐槽 提问" result_msg += f"{item['zlp']}】--{item['title']}\n"
else: result_msg += f"链接:https://www.jx3box.com/pz/view/{item['id']}\n\n"
result_msg = f"类型:{type} 的最新记录如下:\n\n"
for item in data:
result_msg += f"{item['title']}\n"
result_msg += f"分区:{item['zone']} 服务器:{item['server']}\n"
result_msg += f"所属吧:{item['name']}\n"
result_msg += f"链接:https://tieba.baidu.com/p/{item['url']}\n"
result_msg += f"日期:{item['date']}\n\n"
return_data["data"] = result_msg return_data["data"] = result_msg
except Exception as e: except Exception as e:
logger.exception("处理返回数据失败") logger.exception("处理返回数据失败:",e)
return_data["msg"] = "处理返回数据失败" return_data["msg"] = "处理返回数据失败"
return return_data return return_data
+1 -1
View File
@@ -316,7 +316,7 @@
"per": "10", "per": "10",
"page": "1", "page": "1",
"tags": "", "tags": "",
"client": "20", "client": "std",
"global_level": "130", "global_level": "130",
"mount": "", "mount": "",
"star": "1" "star": "1"
+1
View File
@@ -242,6 +242,7 @@ class Jx3ApiPlugin(Star):
"奇遇统计": self.jx3com.jx3_qufuqiyu, "奇遇统计": self.jx3com.jx3_qufuqiyu,
"奇遇攻略": self.jx3com.jx3_qiyugonglue, "奇遇攻略": self.jx3com.jx3_qiyugonglue,
"": self.jx3com.jx3_hong, "": self.jx3com.jx3_hong,
"配装": self.jx3com.jx3_peizhuang,
"金价": self.jx3com.jx3_jinjia, "金价": self.jx3com.jx3_jinjia,
"物价": self.jx3com.jx3_wujia, "物价": self.jx3com.jx3_wujia,
"交易行": self.jx3com.jx3_jiaoyihang, "交易行": self.jx3com.jx3_jiaoyihang,
+1
View File
@@ -151,6 +151,7 @@
<div class="command"><div class="cmd-name">奇遇统计</div><div class="cmd-usage">奇遇统计 奇遇名称 [服务器]</div></div> <div class="command"><div class="cmd-name">奇遇统计</div><div class="cmd-usage">奇遇统计 奇遇名称 [服务器]</div></div>
<div class="command"><div class="cmd-name">奇遇攻略</div><div class="cmd-usage">奇遇攻略 奇遇名称</div></div> <div class="command"><div class="cmd-name">奇遇攻略</div><div class="cmd-usage">奇遇攻略 奇遇名称</div></div>
<div class="command"><div class="cmd-name">魔盒宏</div><div class="cmd-usage">宏 心法</div></div> <div class="command"><div class="cmd-name">魔盒宏</div><div class="cmd-usage">宏 心法</div></div>
<div class="command"><div class="cmd-name">魔盒配装</div><div class="cmd-usage">配装 心法 筛选</div></div>
</div> </div>
</div> </div>