diff --git a/core/jx3_commands.py b/core/jx3_commands.py index fcf5646..41a8395 100644 --- a/core/jx3_commands.py +++ b/core/jx3_commands.py @@ -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 = ""): diff --git a/core/jx3_data.py b/core/jx3_data.py index 446334b..4595466 100644 --- a/core/jx3_data.py +++ b/core/jx3_data.py @@ -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 diff --git a/data/api_config.json b/data/api_config.json index b599e4b..c42213d 100644 --- a/data/api_config.json +++ b/data/api_config.json @@ -316,7 +316,7 @@ "per": "10", "page": "1", "tags": "", - "client": "20", + "client": "std", "global_level": "130", "mount": "", "star": "1" diff --git a/main.py b/main.py index e2d1784..0f8407f 100644 --- a/main.py +++ b/main.py @@ -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, diff --git a/templates/helps.html b/templates/helps.html index fd03b3d..cccb951 100644 --- a/templates/helps.html +++ b/templates/helps.html @@ -151,6 +151,7 @@
奇遇统计
奇遇统计 奇遇名称 [服务器]
奇遇攻略
奇遇攻略 奇遇名称
魔盒宏
宏 心法
+
魔盒配装
配装 心法 筛选