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
+105 -138
View File
@@ -43,12 +43,27 @@ class JX3Commands(Star):
data= await action()
try:
if data["code"] == 200:
return event.plain_result(data["data"])
await event.send( event.plain_result(data["data"]))
else:
return event.plain_result(data["msg"])
await event.send(event.plain_result(data["msg"]))
except Exception as 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):
@@ -56,19 +71,18 @@ class JX3Commands(Star):
data = await action()
try:
if data["code"] == 200:
url = await self.html_render(data["temp"], data["data"], options={})
return event.image_result(url)
await event.send(event.image_result(data["data"]))
else:
return event.plain_result(data["msg"])
await event.send(event.plain_result(data["msg"]))
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
return event.plain_result("猪脑过载,请稍后再试")
await event.send(event.plain_result("猪脑过载,请稍后再试"))
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):
@@ -78,12 +92,12 @@ class JX3Commands(Star):
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 = "穹野卫"):
"""剑三 名望"""
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 = ""):
@@ -93,7 +107,7 @@ class JX3Commands(Star):
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,):
@@ -118,55 +132,32 @@ class JX3Commands(Star):
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):
"""剑三 装饰 名称"""
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):
"""剑三 器物 地图名称"""
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 = ""):
"""剑三 沙盘 服务器"""
try:
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("猪脑过载,请稍后再试")
return await self.image_msg(event, lambda: self.jx3fun.shapan(self.serverdefault(server)))
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):
"""剑三 奇遇攻略 奇遇名称"""
try:
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("猪脑过载,请稍后再试")
return await self.T2I_image_msg(event, lambda: self.jx3fun.qiyugonglue(name))
async def jx3_hong(self, event: AstrMessageEvent, kungfu: str = "易筋经"):
@@ -175,154 +166,130 @@ class JX3Commands(Star):
try:
data = await self.jx3fun.hong1(kungfu)
if data["code"] == 200:
yield event.plain_result(data["msg"])
await event.send(event.plain_result(data["msg"]))
# 获取用户ID
user_id = event.get_sender_id()
# 等等用户回复
@session_waiter(timeout=30)
async def macro_select_waiter(controller: SessionController,new_event: AstrMessageEvent):
if new_event.get_sender_id() != user_id:
return
msg = new_event.get_message_str().strip()
if not msg.isdigit():
await new_event.send(
MessageChain().message("输入异常,结束会话")
)
controller.stop()
return
num = int(msg)
if num < 1 or num > data["data"]["num"]:
await new_event.send(
MessageChain().message("无效序号,结束会话")
)
controller.stop()
return
try:
data1 = await self.jx3fun.hong2(data["data"]["pid"][num])
if data1["code"] != 200:
await new_event.send(
MessageChain().message("获取详细宏数据失败")
)
controller.stop()
return
chain = MessageChain()
if data1["temp"] != "":
url = await self.html_render(data1["temp"], {}, options={})
chain.url_image(url)
msg_text = data1["data"]
chain.message(msg_text)
await new_event.send(chain)
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
await new_event.send(
MessageChain().message("猪脑过载,请稍后再试")
)
controller.stop()
try:
await macro_select_waiter(event)
except TimeoutError:
await event.send(event.plain_result("选择宏超时,已结束会话"))
except Exception:
logger.error("宏选择发生异常", exc_info=True)
else:
yield event.plain_result(f"未搜索到与【{kungfu}】相关的宏")
await event.send(event.plain_result(f"未搜索到与【{kungfu}】相关的宏"))
return
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
yield event.plain_result("猪脑过载,请稍后再试")
await event.send(event.plain_result("猪脑过载,请稍后再试"))
# 获取用户ID
user_id = event.get_sender_id()
# 等等用户回复
@session_waiter(timeout=30)
async def macro_select_waiter(controller: SessionController,new_event: AstrMessageEvent):
if new_event.get_sender_id() != user_id:
return
msg = new_event.get_message_str().strip()
if not msg.isdigit():
await new_event.send(
MessageChain().message("输入异常,结束会话")
)
controller.stop()
return
num = int(msg)
if num < 1 or num > data["data"]["num"]:
await new_event.send(
MessageChain().message("无效序号,结束会话")
)
controller.stop()
return
try:
data1 = await self.jx3fun.hong2(data["data"]["pid"][num])
if data1["code"] != 200:
await new_event.send(
MessageChain().message("获取详细宏数据失败")
)
controller.stop()
return
chain = MessageChain()
if data1["temp"] != "":
url = await self.html_render(data1["temp"], {}, options={})
chain.url_image(url)
msg_text = data1["data"]
chain.message(msg_text)
await new_event.send(chain)
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
await new_event.send(
MessageChain().message("猪脑过载,请稍后再试")
)
controller.stop()
try:
await macro_select_waiter(event)
except TimeoutError:
yield event.plain_result("选择宏超时,已结束会话")
except Exception:
logger.error("宏选择发生异常", exc_info=True)
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"):
"""剑三 金价 服务器"""
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 = ""):
"""剑三 物价 外观名称"""
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 = ""):
"""剑三 交易行 物品名称 服务器"""
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 = ""):
"""剑三 名片 角色 服务器"""
try:
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("猪脑过载,请稍后再试")
return await self.image_msg(event, lambda: self.jx3fun.jueshemingpian( self.serverdefault(server),name))
async def jx3_shuijimingpian(self, event: AstrMessageEvent,force: str = "万花", body: str = "萝莉", server: str = ""):
"""剑三 随机名片 职业 体型 服务器"""
try:
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("猪脑过载,请稍后再试")
return await self.image_msg(event, lambda: self.jx3fun.shuijimingpian(force,body, self.serverdefault(server)))
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 = ""):
"""剑三 的卢 服务器"""
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 = ""):
"""剑三 招募 副本 服务器"""
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"):
"""剑三 战绩 角色 服务器 类型"""
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 = ""):
"""剑三 奇遇 角色名称 服务器"""
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 = ""):
"""剑三 阵营拍卖 物品名称 服务器"""
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 = ""):
+75 -47
View File
@@ -826,7 +826,7 @@ class JX3Service:
return return_data
# 3. 处理返回数据 (直接提取图片 URL)
return_data["data"] = data
return_data["data"] = data['showAvatar']
return_data["code"] = 200
return return_data
@@ -849,7 +849,7 @@ class JX3Service:
return return_data
# 3. 处理返回数据 (直接提取图片 URL)
return_data["data"] = data
return_data["data"] = data['showAvatar']
return_data["code"] = 200
return return_data
@@ -1001,7 +1001,7 @@ class JX3Service:
# 角色名片获取
datamp = await self.jueshemingpian(server,name)
if datamp["code"] == 200:
data["showAvatar"] = datamp['data']['showAvatar']
data["showAvatar"] = datamp['data']
logger.info("名片获取完成")
else:
data["showAvatar"] = ""
@@ -1299,7 +1299,7 @@ class JX3Service:
# 4. 处理数据
try:
return_data["data"] = data2["post"]["title"]
return_data["data"] = {}
content = data2["post"]["content"]
return_data["temp"] = content
except Exception as e:
@@ -1386,69 +1386,97 @@ class JX3Service:
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()
name_map = {
"冰心":10081,
"冰心":10081,
"云裳心经":10080,
"奶秀":10080,
"花间游":10021,
"离经易道":10028,
"冰心诀":10081,
"冰心诀":10081,
"冰心":10081,
"冰心诀":10081,
"冰心诀":10081,
"冰心诀":10081,
"冰心诀":10081,
"冰心诀":10081,
"冰心诀":10081,
"冰心诀":10081,
"冰心诀":10081,
"冰心诀":10081,
"冰心诀":10081,
"冰心诀":10081,
"冰心诀":10081,
"冰心诀":10081,
"冰心":10081,
"冰心诀":10081,
"冰心诀":10081,
"冰心诀":10081,
"冰心诀":10081,
"冰心诀":10081,
"冰心诀":10081,
"冰心诀":10081,
"冰心诀":10081,
"冰心诀":10081,
"冰心诀":10081
"奶花":10028,
"毒经":10175,
"补天":10176,
"奶毒":10176,
"莫问":10447,
"相知":10448,
"奶歌":10448,
"无方":10627,
"灵素":10626,
"奶药":10626,
"傲血战意":10026,
"铁牢律":10062,
"策T":10062,
"易筋经":10003,
"洗髓经":10002,
"秃T":10002,
"焚影圣":10242,
"明尊琉璃体":10243,
"喵T":10243,
"分山劲":10390,
"铁骨衣":10389,
"苍T":10389,
"紫霞功":10014,
"气纯":10014,
"太虚剑意":10015,
"剑纯":10015,
"天罗诡道":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. 构造请求参数
params = {"per": "10","page": "1","tags": "","client": "20","global_level": "130","mount": "","star": "1"}
params = {"mount": mount, "tags": tags}
# 2. 调用基础请求
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. 处理返回数据
try:
if not data:
result_msg = f"未找到相关 {type} 记录。\n"
result_msg += f"可选范围:818 616 鬼网三 鬼网3 树洞 记录 教程 街拍 故事 避雷 吐槽 提问"
else:
result_msg = f"类型:{type} 的最新记录如下:\n\n"
result_msg = f"{name}--配装\n"
for item in data["list"]:
result_msg += f"{item['zlp']}】--{item['title']}\n"
result_msg += f"链接:https://www.jx3box.com/pz/view/{item['id']}\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
except Exception as e:
logger.exception("处理返回数据失败")
logger.exception("处理返回数据失败:",e)
return_data["msg"] = "处理返回数据失败"
return return_data
+1 -1
View File
@@ -316,7 +316,7 @@
"per": "10",
"page": "1",
"tags": "",
"client": "20",
"client": "std",
"global_level": "130",
"mount": "",
"star": "1"
+1
View File
@@ -242,6 +242,7 @@ class Jx3ApiPlugin(Star):
"奇遇统计": self.jx3com.jx3_qufuqiyu,
"奇遇攻略": self.jx3com.jx3_qiyugonglue,
"": self.jx3com.jx3_hong,
"配装": self.jx3com.jx3_peizhuang,
"金价": self.jx3com.jx3_jinjia,
"物价": self.jx3com.jx3_wujia,
"交易行": 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>
</div>