diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f02c10..9224ed1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ ## 更新记录 +### version: 2.2: + +接口地址调整,增加部分功能 + ### version: 2.1: 接口地址调整 diff --git a/core/jx3_data.py b/core/jx3_data.py index c295d52..0918392 100644 --- a/core/jx3_data.py +++ b/core/jx3_data.py @@ -789,6 +789,531 @@ class JX3Service: return return_data + async def fuyaojjiutian(self, server: str) -> Dict[str, Any]: + """扶摇九天""" + return_data = self._init_return_data() + + # 1. 构造请求参数 + params = {"server": server, "token": self.token} + + # 2. 调用基础请求 + data: Optional[list[Dict[str, Any]]] = await self._base_request( + "jx3_fuyaojiutian", "GET", params=params + ) + + if not data: + return_data["msg"] = "获取接口信息失败" + return return_data + + # 3. 处理返回数据 + try: + data_new = data[0] + data_time = datetime.fromtimestamp(data_new['time']).strftime('%Y-%m-%d %H:%M:%S') + result_msg = f"{server}\n" + if data_new["status"] == 0: + result_msg += f"本轮扶摇九天尚未开启\n" + if data_new["status"] == 1: + result_msg += f"本轮扶摇九天正在进行\n" + if data_new["status"] == 2: + result_msg += f"本轮扶摇九天已经结束\n" + result_msg += f"开启时间:{data_time}\n" + return_data["data"] = result_msg + except Exception as e: + logger.error(f"处理返回数据失败: {e}") + return_data["msg"] = "处理返回数据失败" + return return_data + + return_data["code"] = 200 + + return return_data + + + async def zhengyingpaimai(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_zhengyingpaimai", "GET", params=params + ) + + if not data: + return_data["msg"] = "获取接口信息失败" + return return_data + + # 3. 处理返回数据 + try: + for item in data: + item["time"] = datetime.fromtimestamp(item["time"]).strftime("%Y-%m-%d %H:%M:%S") + return_data["data"]["list"] = data + except Exception as e: + logger.error(f"处理返回数据失败: {e}") + return_data["msg"] = "处理返回数据失败" + return return_data + + # 4. 加载模板 + try: + return_data["temp"] = await load_template("zhengyingpaimai.html") + except FileNotFoundError as e: + logger.error(f"加载模板失败: {e}") + return_data["msg"] = "系统错误:模板文件不存在" + return return_data + + + return_data["code"] = 200 + + return return_data + + + async def dilujilu(self, server: str) -> Dict[str, Any]: + """的卢记录""" + return_data = self._init_return_data() + + # 1. 构造请求参数 + params = {"server": server, "token": self.token} + + # 2. 调用基础请求 + data: Optional[List[Dict[str, Any]]] = await self._base_request( + "jx3_dilujilu", "GET", params=params + ) + + if not data: + return_data["msg"] = "获取接口信息失败" + return return_data + + # 3. 处理返回数据 + try: + for item in data: + item["refresh_time"] = datetime.fromtimestamp(item["refresh_time"]).strftime("%Y-%m-%d %H:%M:%S") + item["capture_time"] = datetime.fromtimestamp(item["capture_time"]).strftime("%Y-%m-%d %H:%M:%S") + item["auction_time"] = datetime.fromtimestamp(item["auction_time"]).strftime("%Y-%m-%d %H:%M:%S") + return_data["data"]["list"] = data + except Exception as e: + logger.error(f"数据处理时出错: {e}") + return_data["msg"] = "处理接口返回信息时出错" + return return_data + + # 4. 加载模板 + try: + return_data["temp"] = await load_template("dilujilu.html") + except FileNotFoundError as e: + logger.error(f"加载模板失败: {e}") + return_data["msg"] = "系统错误:模板文件不存在" + return return_data + + return_data["code"] = 200 + + return return_data + + + async def yanhuachaxun(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_yanhuachaxun", "GET", params=params + ) + + if not data: + return_data["msg"] = "获取接口信息失败" + return return_data + + # 3. 处理返回数据 + try: + for item in data: + if isinstance(item, dict): + timestamp = item.get("time") + if timestamp and isinstance(timestamp, (int, float)): + item["time"] = datetime.fromtimestamp(timestamp).strftime("%Y-%m-%d %H:%M:%S") + else: + item["time"] = "未知时间" + + return_data["data"]["list"] = data + except Exception as e: + logger.error(f"数据处理时出错: {e}") + return_data["msg"] = "处理接口返回信息时出错" + return return_data + + # 4. 加载模板 + try: + return_data["temp"] = await load_template("yanhuan.html") + except FileNotFoundError as e: + logger.error(f"加载模板失败: {e}") + return_data["msg"] = "系统错误:模板文件不存在" + return return_data + + return_data["code"] = 200 + + return return_data + + + async def pianzhi(self, uid: str) -> Dict[str, Any]: + """骗子查询""" + return_data = self._init_return_data() + + # 1. 构造请求参数 + params = {"uid": uid, "token": self.token} + + # 2. 调用基础请求 + data: Optional[Dict[str, Any]] = await self._base_request( + "jx3_pianzhi", "GET", params=params + ) + + if not data: + return_data["msg"] = "获取接口信息失败" + return return_data + + # 3. 处理返回数据 + try: + records = data["records"] + + if not records: + result_msg = "未找到该用户行骗记录,很棒!继续保持!" + else: + result_msg = "" + + for record in records: + result_msg += f"区服:{record['server']} 标签:{record['tieba']}\n\n" + + for item in record["data"]: + result_msg += f"标题:{item['title']}\n" + result_msg += f"地址:{item['url']}\n" + result_msg += f"ID:{item['tid']}\n" + result_msg += f"内容:{item['text']}\n" + result_msg += ( + f"时间:{datetime.fromtimestamp(item['time']).strftime('%Y-%m-%d %H:%M:%S')}\n\n" + ) + + result_msg += "\n\n" + return_data["data"] = result_msg + except Exception as e: + logger.error(f"处理返回数据失败: {e}") + return_data["msg"] = "处理返回数据失败" + return return_data + + return_data["code"] = 200 + + 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 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 zhanji(self, name: str, server:str, mode:str) -> Dict[str, Any]: + """战绩""" + return_data = self._init_return_data() + + # 1. 构造请求参数 + params = {"server": server, "name":name, "mode":mode, "token": self.token, "ticket": self.ticket} + + # 2. 调用基础请求 + data: Optional[Dict[str, Any]] = await self._base_request( + "jx3_zhanji", "GET", params=params + ) + + if not data: + return_data["msg"] = "查询角色战绩失败" + return return_data + + # 4. 加载模板 + try: + return_data["temp"] = await load_template("zhanji.html") + except FileNotFoundError as e: + logger.error(f"加载模板失败: {e}") + return_data["msg"] = "系统错误:模板文件不存在" + return return_data + + return_data["data"] = data + return_data["code"] = 200 + + return return_data + + + async def mingjianpaihang(self, limit: str, mode:str) -> Dict[str, Any]: + """名剑排行""" + return_data = self._init_return_data() + + # 1. 构造请求参数 + params = {"limit": limit, "mode":mode, "token": self.token, "ticket": self.ticket} + + # 2. 调用基础请求 + data: Optional[Dict[str, Any]] = await self._base_request( + "jx3_mingjianpaihang", "GET", params=params + ) + + if not data: + return_data["msg"] = "获取接口数据失败" + return return_data + + return_data["data"]["lists"] = data + + # 4. 加载模板 + try: + return_data["temp"] = await load_template("mingjianpaihang.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() + + # 1. 构造请求参数 + params = {"server": server, "keyword": keyword, "token": self.token} + + # 2. 调用基础请求 + data: Optional[Dict[str, Any]] = await self._base_request( + "jx3_tuanduizhaomu", "GET", params=params + ) + + if not data: + return_data["msg"] = "获取接口信息失败" + return return_data + + # 3. 处理返回数据 + try: + for item in data["data"]: + item["createTime"] = datetime.fromtimestamp(item["createTime"]).strftime("%Y-%m-%d %H:%M:%S") + item["number"] = f"{item['number']}/{item['maxNumber']}" + return_data["data"]["list"] = data["data"] + except Exception as e: + logger.error(f"数据处理时出错: {e}") + return_data["msg"] = "处理接口返回信息时出错" + return return_data + + # 4. 加载模板 + try: + return_data["temp"] = await load_template("tuanduizhaomu.html") + 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() + + # 1. 构造请求参数 + params = {"server": server, "name": name, "token": self.token} + + # 2. 调用基础请求 + data: Optional[Dict[str, Any]] = await self._base_request( + "jx3_jueshexinxi", "GET", params=params + ) + if not data: + return_data["msg"] = "获取接口信息失败" + return return_data + + # 3. 处理返回数据 + try: + # 格式化字符串,利用字典的 get 方法提供默认值 + result_msg = ( + f"服务器:{data.get('zoneName', '无')}·{data.get('serverName', '无')}\n" + f"名称:{data.get('roleName', '无')}\n" + f"角色ID:{data.get('roleId', '无')}\n" + f"全区ID:{data.get('globalRoleId', '无')}\n" + f"职业:{data.get('forceName', '无')}·{data.get('bodyName', '无')}\n" + f"帮会:{data.get('tongName', '无')}\n" + f"阵营:{data.get('campName', '无')}\n" + ) + + return_data["data"] = result_msg + return_data["code"] = 200 + except Exception as e: + logger.error(f"数据处理时出错: {e}") + return_data["msg"] = "处理接口返回信息时出错" + return return_data + + return_data["code"] = 200 + + 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[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 + + async def shuamamsg(self,server:str,type:str,subtype:str) -> Dict[str, Any]: """刷马消息""" return_data = self._init_return_data() @@ -822,6 +1347,41 @@ class JX3Service: return return_data + async def shuma(self, server: str) -> Dict[str, Any]: + """刷马""" + return_data = self._init_return_data() + + # 1. 构造请求参数 + params = {"server": server, "token": self.token} + + # 2. 调用基础请求 + data: Optional[Dict[str, Any]] = await self._base_request( + "jx3_shuama", "GET", params=params, out_key="" + ) + + if not data: + return_data["msg"] = "获取接口信息失败" + return return_data + + # 3. 处理返回数据 + try: + _data = data["data"]["data"] + result_msg = f"{server}\n" + result_msg += f"黑戈壁:\n{_data['黑戈壁'][0]}\n" + result_msg += f"阴山大草原:\n{_data['阴山大草原'][0]}\n" + result_msg += f"鲲鹏岛:\n{_data['鲲鹏岛'][0]}\n" + result_msg += f"\n{data['data']['note']}" + return_data["data"] = result_msg + except Exception as e: + logger.error(f"处理返回数据失败: {e}") + return_data["msg"] = "处理返回数据失败" + return return_data + + return_data["code"] = 200 + + return return_data + + async def jinjia(self, server: str, limit:str) -> Dict[str, Any]: """区服金价""" return_data = self._init_return_data() @@ -856,62 +1416,12 @@ class JX3Service: return return_data - async def qiyu(self, adventureName: str, serverName: str) -> Dict[str, Any]: - """区服奇遇""" - return_data = self._init_return_data() - - params = {"adventureName": adventureName, "serverName": serverName} - data_list: Optional[List[Dict[str, Any]]] = await self._base_request("aijx3_qiyu", "POST", params=params) - - if not data_list or not isinstance(data_list, list): - return_data["msg"] = "获取接口信息失败或数据格式错误" - return return_data - - # 格式化时间 - try: - for item in data_list: - timestamp = item.get("time") - if timestamp and isinstance(timestamp, (int, float)): - # 修复时间戳:原代码显示这里是毫秒级,除以 1000 - item["time"] = datetime.fromtimestamp(timestamp / 1000).strftime("%Y-%m-%d %H:%M:%S") - else: - item["time"] = "未知时间" # 确保即使 time 字段缺失也不会报错 - 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 - - # 准备模板渲染数据 - try: - return_data["data"] = { - "items": data_list, - "server": serverName, - "update_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), - "qiyuname": adventureName - } - return_data["code"] = 200 - except Exception as e: - logger.error(f"模板数据准备失败: {e}") - return_data["msg"] = "系统错误:模板渲染数据准备失败" - return return_data - - return return_data - - async def wujia(self, Name: str, server:str) -> Dict[str, Any]: """物价查询""" return_data = self._init_return_data() # 2. 确定外观名称和 ID - + params_search = {"name": Name,"token": self.token, "server": server} search_data: Optional[Dict[str, Any]] = await self._base_request("jx3_wujia", "GET", params=params_search) @@ -984,445 +1494,6 @@ class JX3Service: 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[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 - - - async def yanhuachaxun(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_yanhuachaxun", "GET", params=params - ) - - if not data: - return_data["msg"] = "获取接口信息失败" - return return_data - - # 3. 处理返回数据 - try: - for item in data: - if isinstance(item, dict): - timestamp = item.get("time") - if timestamp and isinstance(timestamp, (int, float)): - item["time"] = datetime.fromtimestamp(timestamp).strftime("%Y-%m-%d %H:%M:%S") - else: - item["time"] = "未知时间" - - return_data["data"]["list"] = data - except Exception as e: - logger.error(f"数据处理时出错: {e}") - return_data["msg"] = "处理接口返回信息时出错" - return return_data - - # 4. 加载模板 - try: - return_data["temp"] = await load_template("yanhuan.html") - except FileNotFoundError as e: - logger.error(f"加载模板失败: {e}") - return_data["msg"] = "系统错误:模板文件不存在" - return return_data - - return_data["code"] = 200 - - return return_data - - - async def dilujilu(self, server: str) -> Dict[str, Any]: - """的卢记录""" - return_data = self._init_return_data() - - # 1. 构造请求参数 - params = {"server": server, "token": self.token} - - # 2. 调用基础请求 - data: Optional[List[Dict[str, Any]]] = await self._base_request( - "jx3_dilujilu", "GET", params=params - ) - - if not data: - return_data["msg"] = "获取接口信息失败" - return return_data - - # 3. 处理返回数据 - try: - for item in data: - item["refresh_time"] = datetime.fromtimestamp(item["refresh_time"]).strftime("%Y-%m-%d %H:%M:%S") - item["capture_time"] = datetime.fromtimestamp(item["capture_time"]).strftime("%Y-%m-%d %H:%M:%S") - item["auction_time"] = datetime.fromtimestamp(item["auction_time"]).strftime("%Y-%m-%d %H:%M:%S") - return_data["data"]["list"] = data - except Exception as e: - logger.error(f"数据处理时出错: {e}") - return_data["msg"] = "处理接口返回信息时出错" - return return_data - - # 4. 加载模板 - try: - return_data["temp"] = await load_template("dilujilu.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() - - # 1. 构造请求参数 - params = {"server": server, "keyword": keyword, "token": self.token} - - # 2. 调用基础请求 - data: Optional[Dict[str, Any]] = await self._base_request( - "jx3_tuanduizhaomu", "GET", params=params - ) - - if not data: - return_data["msg"] = "获取接口信息失败" - return return_data - - # 3. 处理返回数据 - try: - for item in data["data"]: - item["createTime"] = datetime.fromtimestamp(item["createTime"]).strftime("%Y-%m-%d %H:%M:%S") - item["number"] = f"{item['number']}/{item['maxNumber']}" - return_data["data"]["list"] = data["data"] - except Exception as e: - logger.error(f"数据处理时出错: {e}") - return_data["msg"] = "处理接口返回信息时出错" - return return_data - - # 4. 加载模板 - try: - return_data["temp"] = await load_template("tuanduizhaomu.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() - - # 1. 构造请求参数 - params = {"server": server, "name":name, "mode":mode, "token": self.token, "ticket": self.ticket} - - # 2. 调用基础请求 - data: Optional[Dict[str, Any]] = await self._base_request( - "jx3_zhanji", "GET", params=params - ) - - if not data: - return_data["msg"] = "查询角色战绩失败" - return return_data - logger.info("战绩获取完成") - - # 角色名片获取 - - data["showAvatar"] = "" - - # 4. 加载模板 - try: - return_data["temp"] = await load_template("zhanji.html") - except FileNotFoundError as e: - logger.error(f"加载模板失败: {e}") - return_data["msg"] = "系统错误:模板文件不存在" - return return_data - - return_data["data"] = data - return_data["code"] = 200 - - 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_qiyu", "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 zhengyingpaimai(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_zhengyingpaimai", "GET", params=params - ) - - if not data: - return_data["msg"] = "获取接口信息失败" - return return_data - - # 3. 处理返回数据 - try: - for item in data: - item["time"] = datetime.fromtimestamp(item["time"]).strftime("%Y-%m-%d %H:%M:%S") - return_data["data"]["list"] = data - except Exception as e: - logger.error(f"处理返回数据失败: {e}") - return_data["msg"] = "处理返回数据失败" - return return_data - - # 4. 加载模板 - try: - return_data["temp"] = await load_template("zhengyingpaimai.html") - except FileNotFoundError as e: - logger.error(f"加载模板失败: {e}") - return_data["msg"] = "系统错误:模板文件不存在" - return return_data - - - return_data["code"] = 200 - - return return_data - - - async def fuyaojjiutian(self, server: str) -> Dict[str, Any]: - """扶摇九天""" - return_data = self._init_return_data() - - # 1. 构造请求参数 - params = {"server": server, "token": self.token} - - # 2. 调用基础请求 - data: Optional[list[Dict[str, Any]]] = await self._base_request( - "jx3_fuyaojiutian", "GET", params=params - ) - - if not data: - return_data["msg"] = "获取接口信息失败" - return return_data - - # 3. 处理返回数据 - try: - data_new = data[0] - data_old = data[1] - result_msg = f"{server}\n" - result_msg += f"上次[扶摇九天]开启时间:{datetime.fromtimestamp(data_old['time']).strftime('%Y-%m-%d %H:%M:%S')}\n" - result_msg += f"本次[扶摇九天]开启时间:{datetime.fromtimestamp(data_new['time']).strftime('%Y-%m-%d %H:%M:%S')}" - return_data["data"] = result_msg - except Exception as e: - logger.error(f"处理返回数据失败: {e}") - return_data["msg"] = "处理返回数据失败" - return return_data - - return_data["code"] = 200 - - return return_data - - - async def shuma(self, server: str) -> Dict[str, Any]: - """刷马""" - return_data = self._init_return_data() - - # 1. 构造请求参数 - params = {"server": server, "token": self.token} - - # 2. 调用基础请求 - data: Optional[Dict[str, Any]] = await self._base_request( - "jx3_shuama", "GET", params=params, out_key="" - ) - - if not data: - return_data["msg"] = "获取接口信息失败" - return return_data - - # 3. 处理返回数据 - try: - _data = data["data"]["data"] - result_msg = f"{server}\n" - result_msg += f"黑戈壁:\n{_data['黑戈壁'][0]}\n" - result_msg += f"阴山大草原:\n{_data['阴山大草原'][0]}\n" - result_msg += f"鲲鹏岛:\n{_data['鲲鹏岛'][0]}\n" - result_msg += f"{data['data']['note']}" - return_data["data"] = result_msg - except Exception as e: - logger.error(f"处理返回数据失败: {e}") - return_data["msg"] = "处理返回数据失败" - return return_data - - return_data["code"] = 200 - - return return_data - - - async def pianzhi(self, uid: str) -> Dict[str, Any]: - """骗子查询""" - return_data = self._init_return_data() - - # 1. 构造请求参数 - params = {"uid": uid, "token": self.token} - - # 2. 调用基础请求 - data: Optional[Dict[str, Any]] = await self._base_request( - "jx3_pianzhi", "GET", params=params - ) - - if not data: - return_data["msg"] = "获取接口信息失败" - return return_data - - # 3. 处理返回数据 - try: - records = data["records"] - - if not records: - result_msg = "未找到该用户行骗记录,很棒!继续保持!" - else: - result_msg = "" - - for record in records: - result_msg += f"区服:{record['server']} 标签:{record['tieba']}\n\n" - - for item in record["data"]: - result_msg += f"标题:{item['title']}\n" - result_msg += f"地址:{item['url']}\n" - result_msg += f"ID:{item['tid']}\n" - result_msg += f"内容:{item['text']}\n" - result_msg += ( - f"时间:{datetime.fromtimestamp(item['time']).strftime('%Y-%m-%d %H:%M:%S')}\n\n" - ) - - result_msg += "\n\n" - return_data["data"] = result_msg - except Exception as e: - logger.error(f"处理返回数据失败: {e}") - return_data["msg"] = "处理返回数据失败" - return return_data - - return_data["code"] = 200 - - return return_data - - async def bagua(self, type: str) -> Dict[str, Any]: """八卦""" return_data = self._init_return_data() @@ -1458,7 +1529,7 @@ class JX3Service: return_data["code"] = 200 return return_data - + async def qiyugonglue(self, name: str) -> Dict[str, Any]: """奇遇攻略""" @@ -1653,41 +1724,3 @@ class JX3Service: return return_data - async def jueshe(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_jueshexinxi", "GET", params=params - ) - if not data: - return_data["msg"] = "获取接口信息失败" - return return_data - - # 3. 处理返回数据 - try: - # 格式化字符串,利用字典的 get 方法提供默认值 - result_msg = ( - f"服务器:{data.get('zoneName', '无')}·{data.get('serverName', '无')}\n" - f"名称:{data.get('roleName', '无')}\n" - f"角色ID:{data.get('roleId', '无')}\n" - f"全区ID:{data.get('globalRoleId', '无')}\n" - f"职业:{data.get('forceName', '无')}·{data.get('bodyName', '无')}\n" - f"帮会:{data.get('tongName', '无')}\n" - f"阵营:{data.get('campName', '无')}\n" - ) - - return_data["data"] = result_msg - return_data["code"] = 200 - except Exception as e: - logger.error(f"数据处理时出错: {e}") - return_data["msg"] = "处理接口返回信息时出错" - return return_data - - return_data["code"] = 200 - - return return_data \ No newline at end of file diff --git a/core/message.py b/core/message.py index 175beed..b642993 100644 --- a/core/message.py +++ b/core/message.py @@ -277,24 +277,74 @@ class MessageBuilder: return await self.T2I_image_msg(event, self.jx3api.baizhan) - async def jx3_qufuqiyu(self, event: AstrMessageEvent,adventureName: str = "阴阳两界", server: str = ""): + async def jx3_fuyaojjiutian(self, event: AstrMessageEvent,server: str = ""): + """剑三 扶摇九天 服务器""" + return await self.plain_msg(event, lambda: self.jx3api.fuyaojjiutian( self.serverdefault(server))) + + + async def jx3_zhengyingpaimai(self, event: AstrMessageEvent,name: str = "玄晶", server: str = ""): + """剑三 阵营拍卖 物品名称 服务器""" + return await self.T2I_image_msg(event, lambda: self.jx3api.zhengyingpaimai( self.serverdefault(server), name)) + + + async def jx3_dilujilu(self, event: AstrMessageEvent,server: str = ""): + """剑三 的卢 服务器""" + return await self.T2I_image_msg(event, lambda: self.jx3api.dilujilu( self.serverdefault(server))) + + + async def jx3_yanhuachaxun(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = ""): + """剑三 烟花 角色 服务器""" + return await self.T2I_image_msg(event, lambda: self.jx3api.yanhuachaxun( self.serverdefault(server),name)) + + + async def jx3_pianzhi(self, event: AstrMessageEvent,qq: str): + """剑三 骗子 QQ""" + return await self.plain_msg(event, lambda: self.jx3api.pianzhi(qq)) + + + async def jx3_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 jx3_qiyutongji(self, event: AstrMessageEvent,adventureName: str = "阴阳两界", server: str = ""): """剑三 奇遇统计 奇遇名称 服务器""" - return await self.T2I_image_msg(event, lambda: self.jx3api.qiyu(adventureName,self.serverdefault(server))) - - - async def jx3_qiyugonglue(self, event: AstrMessageEvent,name: str): - """剑三 奇遇攻略 奇遇名称""" - return await self.T2I_image_msg(event, lambda: self.jx3api.qiyugonglue(name)) + return await self.T2I_image_msg(event, lambda: self.jx3api.qiyutongji(adventureName,self.serverdefault(server))) - async def jx3_hong(self, event: AstrMessageEvent,name: str = "易筋经"): - """剑三 宏 心法""" - return await self.handler_plain_image_msg(event, lambda: self.jx3api.hong1(name), self.jx3api.hong2) + 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)) - async def jx3_peizhuang(self, event: AstrMessageEvent,name: str = "易筋经", tags: str = ""): - """剑三 配装 心法""" - return await self.plain_msg(event, lambda: self.jx3api.peizhuang( name,tags)) + async def jx3_mingjianpaihang(self, event: AstrMessageEvent,limit: str = "50", mode:str = "33"): + """剑三 排行 数量 类型""" + return await self.T2I_image_msg(event, lambda: self.jx3api.mingjianpaihang(limit,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_jueshe(self, event: AstrMessageEvent,name: str, server: str = ""): + """剑三 角色 名称 服务器""" + return await self.plain_msg(event, lambda: self.jx3api.jueshe(name, self.serverdefault(server))) + + + 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)) + + + async def jx3_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))) + + + async def jx3_shuma(self, event: AstrMessageEvent,server: str = ""): + """剑三 刷马 服务器""" + return await self.plain_msg(event, lambda: self.jx3api.shuma( self.serverdefault(server))) async def jx3_jinjia(self, event: AstrMessageEvent,server: str = "", limit:str = "15"): @@ -312,68 +362,25 @@ class MessageBuilder: return await self.T2I_image_msg(event, lambda: self.jx3api.jiaoyihang(Name, self.serverdefault(server))) - 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)) - - - async def jx3_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))) - - - async def jx3_yanhuachaxun(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = ""): - """剑三 烟花 角色 服务器""" - return await self.T2I_image_msg(event, lambda: self.jx3api.yanhuachaxun( self.serverdefault(server),name)) - - - async def jx3_dilujilu(self, event: AstrMessageEvent,server: str = ""): - """剑三 的卢 服务器""" - return await self.T2I_image_msg(event, lambda: self.jx3api.dilujilu( self.serverdefault(server))) - - - 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_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)) - - - async def jx3_qiyu(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = ""): - """剑三 奇遇 角色名称 服务器""" - return await self.T2I_image_msg(event, lambda: self.jx3api.juesheqiyu(name, self.serverdefault(server))) - - - async def jx3_zhengyingpaimai(self, event: AstrMessageEvent,name: str = "玄晶", server: str = ""): - """剑三 阵营拍卖 物品名称 服务器""" - return await self.T2I_image_msg(event, lambda: self.jx3api.zhengyingpaimai( self.serverdefault(server), name)) - - - async def jx3_fuyaojjiutian(self, event: AstrMessageEvent,server: str = ""): - """剑三 扶摇九天 服务器""" - return await self.plain_msg(event, lambda: self.jx3api.fuyaojjiutian( self.serverdefault(server))) - - - async def jx3_shuma(self, event: AstrMessageEvent,server: str = ""): - """剑三 刷马 服务器""" - return await self.plain_msg(event, lambda: self.jx3api.shuma( self.serverdefault(server))) - - - async def jx3_pianzhi(self, event: AstrMessageEvent,qq: str): - """剑三 骗子 QQ""" - return await self.plain_msg(event, lambda: self.jx3api.pianzhi(qq)) - - async def jx3_bagua(self, event: AstrMessageEvent,name: str = "818"): """剑三 八卦 类型""" return await self.plain_msg(event, lambda: self.jx3api.bagua(name)) - - 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))) + + + async def jx3_qiyugonglue(self, event: AstrMessageEvent,name: str): + """剑三 奇遇攻略 奇遇名称""" + return await self.T2I_image_msg(event, lambda: self.jx3api.qiyugonglue(name)) + + + async def jx3_hong(self, event: AstrMessageEvent,name: str = "易筋经"): + """剑三 宏 心法""" + return await self.handler_plain_image_msg(event, lambda: self.jx3api.hong1(name), self.jx3api.hong2) + + + async def jx3_peizhuang(self, event: AstrMessageEvent,name: str = "易筋经", tags: str = ""): + """剑三 配装 心法""" + return await self.plain_msg(event, lambda: self.jx3api.peizhuang( name,tags)) + async def bilei_add(self, event: AstrMessageEvent,name: str, text: str): """避雷添加 名称 备注""" diff --git a/data/api_config.json b/data/api_config.json index 4fc393d..0c4c0d8 100644 --- a/data/api_config.json +++ b/data/api_config.json @@ -130,38 +130,37 @@ "token":"" } }, - "aijx3_qiyu":{ - "url":"https://www.jianxiachaguan.cn/api2/aijx3-jxcg/game/get-adventure-record", - "method":"POST", - "description":"获取剑网三某区服奇遇触发记录", + "jx3_fuyaojiutian":{ + "url":"https://www.jx3api.com/data/active/next/event", + "method":"GET", + "description":"获取某区服扶摇九天的下次开启时间", "params":{ - "adventureName": "阴阳两界", - "serverName": "眉间雪" + "server": "梦江南", + "token": "" } }, - "jx3_jieshemingpian":{ - "url":"https://www.jx3api.com/data/show/card", + "jx3_zhengyingpaimai":{ + "url":"https://www.jx3api.com/data/auction/records", "method":"GET", - "description":"此接口用于查询指定角色的名片墙信息,包括角色展示图片和展示数据的唯一标识。", + "description":"此接口用于查询阵营拍卖的记录,包括拍卖的物品名称、金额以及相关信息。支持通过区服名称和物品名称进行精确或模糊查询。", "params":{ - "server": "眉间雪", - "name": "夜温言@长安城", - "token":"" + "server": "梦江南", + "name": "玄晶", + "limit": 20, + "token": "" } }, - "jx3_shuijimingpian":{ - "url":"https://www.jx3api.com/data/show/random", + "jx3_dilujilu":{ + "url":"https://www.jx3api.com/data/steed/records", "method":"GET", - "description":"此接口用于随机读取一张符合条件的角色名片。", + "description":"此接口用于查询的卢马的刷新、捕获及拍卖记录,包括捕获者、拍卖价格及相关时间信息", "params":{ "server": "唯我独尊", - "body": "萝莉", - "force":"万花", "token":"" } }, "jx3_yanhuachaxun":{ - "url":"https://www.jx3api.com/data/fireworks/records", + "url":"https://www.jx3api.com/data/show/records", "method":"GET", "description":"此接口用于查询烟花赠送与接收的历史记录,数据可能存在遗漏", "params":{ @@ -170,44 +169,34 @@ "token":"" } }, - "jx3_dilujilu":{ - "url":"https://www.jx3api.com/data/dilu/records", + "jx3_pianzhi":{ + "url":"https://www.jx3api.com/data/fraud/detailed", "method":"GET", - "description":"此接口用于查询的卢马的刷新、捕获及拍卖记录,包括捕获者、拍卖价格及相关时间信息", + "description":"此接口用于通过用户的 QQ 号搜索其在贴吧上的行骗记录,包括贴吧名称、记录标题和详细内容。", "params":{ - "server": "唯我独尊", + "uid": "", + "token": "" + } + }, + "jx3_juesheqiyu":{ + "url":"https://www.jx3api.com/data/event/records", + "method":"GET", + "description":"此接口用于查询指定角色的奇遇触发记录,包括奇遇事件、状态及触发时间。注意,数据可能存在遗漏", + "params":{ + "server": "梦江南", + "name": "飞翔大野猪", "token":"" } }, - "jx3_tuanduizhaomu":{ - "url":"https://www.jx3api.com/data/member/recruit", - "method":"GET", - "description":"此接口用于查询指定区服的团队招募信息,包括活动类型、队长信息及当前队伍状态。", + "jx3_qiyutongji":{ + "url":"https://www.jx3api.com/data/event/statistics", + "method":"POST", + "description":"获取剑网三某区服奇遇触发记录", "params":{ + "name": "阴阳两界", "server": "梦江南", - "keyword": "25人普通会战弓月城", - "table": 1, - "token":"" - } - }, - "jx3_jinjia":{ - "url":"https://www.jx3api.com/data/trade/demon", - "method":"GET", - "description":"金价比例信息", - "params":{ - "server": "梦江南", - "limit": "10", - "token":"" - } - }, - "jx3_wujia":{ - "url":"https://www.jx3api.com/data/trade/records", - "method":"GET", - "description":"此接口用于统计指定物品的黑市价格信息,包括成交、出售、收购等详细记录。", - "params":{ - "server": "梦江南", - "name": "秃盒", - "token":"" + "limit": "10", + "token": "" } }, "jx3_zhanji":{ @@ -222,27 +211,98 @@ "token":"" } }, - "jx3_qiyu":{ - "url":"https://www.jx3api.com/data/luck/adventure", + "jx3_mingjianpaihang":{ + "url":"https://www.jx3api.com/data/arena/awesome", "method":"GET", - "description":"此接口用于查询指定角色的奇遇触发记录,包括奇遇事件、状态及触发时间。注意,数据可能存在遗漏", + "description":"查询名剑大会的排行榜信息,包括玩家排名、分数、胜率等详细竞技数据", "params":{ - "server": "梦江南", - "name": "飞翔大野猪", + "limit": "50", + "mode": "33", + "ticket": "", "token":"" } }, - "jx3_zhengyingpaimai":{ - "url":"https://www.jx3api.com/data/auction/records", + "jx3_tuanduizhaomu":{ + "url":"https://www.jx3api.com/data/recruit/search", "method":"GET", - "description":"此接口用于查询阵营拍卖的记录,包括拍卖的物品名称、金额以及相关信息。支持通过区服名称和物品名称进行精确或模糊查询。", + "description":"此接口用于查询指定区服的团队招募信息,包括活动类型、队长信息及当前队伍状态。", "params":{ "server": "梦江南", - "name": "玄晶", - "limit": 20, + "keyword": "25人普通会战弓月城", + "table": 1, + "token":"" + } + }, + "jx3_jueshexinxi":{ + "url":"https://www.jx3api.com/data/role/detail", + "method":"GET", + "description":"获取角色信息", + "params":{ + "server": "", + "name": "", "token": "" } }, + "jx3_jieshemingpian":{ + "url":"https://www.jx3api.com/data/card/record", + "method":"GET", + "description":"此接口用于查询指定角色的名片墙信息,包括角色展示图片和展示数据的唯一标识。", + "params":{ + "server": "眉间雪", + "name": "夜温言@长安城", + "token":"" + } + }, + "jx3_allmingpian":{ + "url":"https://www.jx3api.com/data/card/records", + "method":"GET", + "description":"获取角色全部名片", + "params":{ + "server": "", + "name": "", + "token": "" + } + }, + "jx3_shuijimingpian":{ + "url":"https://www.jx3api.com/data/card/random", + "method":"GET", + "description":"此接口用于随机读取一张符合条件的角色名片。", + "params":{ + "server": "唯我独尊", + "body": "萝莉", + "force":"万花", + "token":"" + } + }, + "jx3_jinjia":{ + "url":"https://www.jx3api.com/data/trade/demon", + "method":"GET", + "description":"金价比例信息", + "params":{ + "server": "梦江南", + "limit": "10", + "token":"" + } + }, + "jx3_waiguan":{ + "url":"https://www.jx3api.com/data/trade/item/search", + "method":"GET", + "description":"统计外观物品的模糊搜索结果", + "params":{ + "name": "秃盒", + "token":"" + } + }, + "jx3_wujia":{ + "url":"https://www.jx3api.com/data/trade/records", + "method":"GET", + "description":"此接口用于统计指定物品的黑市价格信息,包括成交、出售、收购等详细记录。", + "params":{ + "server": "梦江南", + "name": "秃盒", + "token":"" + } + }, "jx3_jiaoyihang":{ "url":"https://www.jx3api.com/data/trade/market", "method":"GET", @@ -253,17 +313,8 @@ "token": "" } }, - "jx3_fuyaojiutian":{ - "url":"https://www.jx3api.com/data/active/next/event", - "method":"GET", - "description":"获取某区服扶摇九天的下次开启时间", - "params":{ - "server": "梦江南", - "token": "" - } - }, "jx3_shuama":{ - "url":"https://www.jx3api.com/data/horse/ranch", + "url":"https://www.jx3api.com/data/ranch/records", "method":"GET", "description":"获取某区服坐骑刷新时间", "params":{ @@ -271,15 +322,6 @@ "token": "" } }, - "jx3_pianzhi":{ - "url":"https://www.jx3api.com/data/fraud/detailed", - "method":"GET", - "description":"此接口用于通过用户的 QQ 号搜索其在贴吧上的行骗记录,包括贴吧名称、记录标题和详细内容。", - "params":{ - "uid": "", - "token": "" - } - }, "jx3_bagua":{ "url":"https://www.jx3api.com/data/tieba/random", "method":"GET", @@ -337,25 +379,7 @@ "mount": "", "star": "1" } - }, - "jx3_allmingpian":{ - "url":"https://www.jx3api.com/data/show/records", - "method":"GET", - "description":"获取角色全部名片", - "params":{ - "server": "", - "name": "", - "token": "" - } - }, - "jx3_jueshexinxi":{ - "url":"https://www.jx3api.com/data/role/detailed", - "method":"GET", - "description":"获取角色信息", - "params":{ - "server": "", - "name": "", - "token": "" - } } + + } \ No newline at end of file diff --git a/main.py b/main.py index b864b62..ffaf178 100644 --- a/main.py +++ b/main.py @@ -1,5 +1,6 @@ import inspect from pathlib import Path +from typing import cast from astrbot.api.event import filter, AstrMessageEvent from astrbot.api.star import Context, Star, register, StarTools @@ -16,7 +17,7 @@ from .core.fun_basic import load_as_base64 @register("astrbot_plugin_jx3", "fxdyz", "通过调用剑网三API接口获取游戏数据,处理发送。", - "2.1", + "2.2", "https://github.com/qsc20001102/astrbot_plugin_jx3api" ) class Jx3ApiPlugin(Star): @@ -139,11 +140,11 @@ class Jx3ApiPlugin(Star): # 数据库实例化 self.local_sql_db = AsyncSQLiteDB(str(self.local_data_path)) self.plugin_sql_db = AsyncSQLiteDB(str(self.plugin_data_path)) - # 剑网三功能实例化 self.bilei = BiLeidata(self.local_sql_db) self.jx3api = JX3Service(str(self.api_data_path), self.conf, self.plugin_sql_db) - self.jx3at = AsyncTask(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.bilei, self.jx3at, self.icons) self.jx3cmd = MessageBuilder(self.server, self.jx3api, self.bilei, self.jx3at, self.icons) @@ -186,7 +187,7 @@ class Jx3ApiPlugin(Star): self.command_map = { "功能": self.jx3cmd.jx3_helps, "日常": self.jx3cmd.jx3_richang, - "日常预测": self.jx3cmd.jx3_richangyuche, + "月历": self.jx3cmd.jx3_richangyuche, "名望": self.jx3cmd.jx3_xingxiashijian, "科举": self.jx3cmd.jx3_keju, "花价": self.jx3cmd.jx3_huajia, @@ -201,27 +202,28 @@ class Jx3ApiPlugin(Star): "小药": self.jx3cmd.jx3_xiaoyao, "骚话": self.jx3cmd.jx3_shaohua, "沙盘": self.jx3cmd.jx3_shapan, - "统计": self.jx3cmd.jx3_qufuqiyu, "攻略": self.jx3cmd.jx3_qiyugonglue, "宏": self.jx3cmd.jx3_hong, "配装": self.jx3cmd.jx3_peizhuang, "百战": self.jx3cmd.jx3_baizhan, + "扶摇": self.jx3cmd.jx3_fuyaojjiutian, + "拍卖": self.jx3cmd.jx3_zhengyingpaimai, + "的卢": self.jx3cmd.jx3_dilujilu, + "烟花": self.jx3cmd.jx3_yanhuachaxun, + "骗子": self.jx3cmd.jx3_pianzhi, + "查询": self.jx3cmd.jx3_juesheqiyu, + "统计": self.jx3cmd.jx3_qiyutongji, + "战绩": self.jx3cmd.jx3_zhanji, + "排行": self.jx3cmd.jx3_mingjianpaihang, + "招募": self.jx3cmd.jx3_tuanduizhaomu, + "角色": self.jx3cmd.jx3_jueshe, + "名片": self.jx3cmd.jx3_jueshemingpian, + "随机": self.jx3cmd.jx3_shuijimingpian, + "刷马": self.jx3cmd.jx3_shuma, "金价": self.jx3cmd.jx3_jinjia, "物价": self.jx3cmd.jx3_wujia, - "交易行": self.jx3cmd.jx3_jiaoyihang, - "名片": self.jx3cmd.jx3_jueshemingpian, - "随机名片": self.jx3cmd.jx3_shuijimingpian, - "烟花": self.jx3cmd.jx3_yanhuachaxun, - "的卢": self.jx3cmd.jx3_dilujilu, - "招募": self.jx3cmd.jx3_tuanduizhaomu, - "战绩": self.jx3cmd.jx3_zhanji, - "查询": self.jx3cmd.jx3_qiyu, - "拍卖": self.jx3cmd.jx3_zhengyingpaimai, - "扶摇九天": self.jx3cmd.jx3_fuyaojjiutian, - "刷马": self.jx3cmd.jx3_shuma, - "骗子": self.jx3cmd.jx3_pianzhi, "八卦": self.jx3cmd.jx3_bagua, - "角色": self.jx3cmd.jx3_jueshe, + "交易行": self.jx3cmd.jx3_jiaoyihang, "开服推送": self.jx3cmd.jx3_kaifhujiank, "新闻推送": self.jx3cmd.jx3_xinwenzhixun, "刷马推送": self.jx3cmd.jx3_shuamamsg, diff --git a/metadata.yaml b/metadata.yaml index 6162158..6fbe241 100644 --- a/metadata.yaml +++ b/metadata.yaml @@ -1,6 +1,9 @@ name: astrbot_plugin_jx3 display_name: 剑网三游戏数据查询工具 desc: 通过接口调用剑网三API接口获取游戏数据,处理发送。 -version: v2.1 +version: v2.2 author: 飞翔大野猪 repo: https://github.com/qsc20001102/astrbot_plugin_jx3 +astrbot_version: ">=4.11.0" +support_platforms: + - aiocqhttp diff --git a/templates/baizhan.html b/templates/baizhan.html index c15bec2..66559a4 100644 --- a/templates/baizhan.html +++ b/templates/baizhan.html @@ -107,7 +107,7 @@
| 排名 | +头像 | +角色 | +区服 | +门派 | +分数 | +胜率 | +
|---|---|---|---|---|---|---|
| + {{ m.rankNum }} + | + +
+ |
+
+ {{ m.roleName }} | + +{{ m.zoneName }} · {{ m.serverName }} | + +{{ m.forceName }} | + +{{ m.score }} | + +{{ m.winRate }} | +