diff --git a/README.md b/README.md index 1e72a35..747e3b8 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,5 @@ # 王者数据查询工具 -## 目录 - -- [王者荣耀数据查询工具](#-王者荣耀数据查询工具) - - [目录](#-目录) - - [简介](#-简介) - - [更新记录](#-更新记录) - - [功能特点](#-功能特点) - - [插件配置](#-插件配置) - - [使用方式](#-使用方式) - ## 简介 主要是自用,查询战绩,在游戏中隐藏的战绩也可以查,如果营地的战绩也隐藏了就查不了。只有营地里面大号的ID才可查询。 @@ -20,11 +10,11 @@ ## 更新记录 -version: 1.0.0:大部分重要功能已经实现 +version: 1.0.2:新增战绩评价功能,参考最新10把战绩,调用模型进行简单的评价。指令触发方式调整,删除王者字符。如果还需要王者战绩来触发需要在指令前缀里面添加 王者。 version: 1.0.1:新增英雄的上榜战力查询,需要柠柚API。 -version: 1.0.2:新增战绩评价功能,参考最新10把战绩,调用模型进行简单的评价。 +version: 1.0.0:大部分重要功能已经实现 ## 功能特点 @@ -47,9 +37,11 @@ version: 1.0.2:新增战绩评价功能,参考最新10把战绩,调用模 ## 使用方式 -在聊天中输入 **王者功能** 即可获取插件所有的功能使用说明。 +如果开启了前缀,需要在所有指令前面加上设定的前缀。 -在使用 **王者战绩** 和 **王者资料** 两个功能时后面可以直接输入营地ID进行查询,或者输入提前自定义好的角色来查询。 +在聊天中输入 **功能** 即可获取插件所有的功能使用说明。 + +在使用 **战绩** 和 **资料** 两个功能时后面可以直接输入营地ID进行查询,或者输入提前自定义好的角色来查询。 在使用 **上榜战力** 时,可以在英雄名称后面加一个大区参数 aqq awx iqq iwx 四个大区,不写默认aqq。 diff --git a/_conf_schema.json b/_conf_schema.json index 072a60d..e55e8af 100644 --- a/_conf_schema.json +++ b/_conf_schema.json @@ -6,13 +6,13 @@ "enable": { "description": "是否启用", "type": "bool", - "default": false, + "default": true, "hint": "是否启用指令前缀检查功能" }, "text": { "description": "前缀内容", "type": "string", - "default": "王者荣耀", + "default": "王者", "hint": "为了避免和其他插件的指令冲突可以增加指令的前缀,为空默认值为王者。" } } diff --git a/core/gok_data.py b/core/gok_data.py index 0048c70..c80a20c 100644 --- a/core/gok_data.py +++ b/core/gok_data.py @@ -26,11 +26,17 @@ class GOKServer: self._sql_db = sqlite # 获取配置中的 Token - self.token = self._config.get("ytapi_token", "") - if self.token == "": - logger.info("获取配置token失败,请正确填写token,否则部分功能无法正常使用") + self.ytapi_token = self._config.get("ytapi_token", "") + if self.ytapi_token == "": + logger.warning("获取应天API令牌配置失败,请正确填写令牌,否则部分功能无法正常使用") else: - logger.debug(f"获取配置token成功。{self.token}") + logger.debug(f"获取应天API令牌成功。{self.ytapi_token}") + + self.nyapi_token = self._config.get("nyapi_token", "") + if self.nyapi_token == "": + logger.warning("获取柠柚API令牌配置失败,请正确填写令牌,否则部分功能无法正常使用") + else: + logger.debug(f"获取柠柚API令牌成功。{self.nyapi_token}") async def close(self): @@ -342,16 +348,10 @@ class GOKServer: return_data = self._init_return_data() # 获取配置中的 Token - token = self._config.get("ytapi_token", "") - if token == "": + if self.ytapi_token == "": return_data["msg"] = "系统未配置API访问Token" return return_data - self.comment_en = self._config.get("comment").get("enable") - logger.debug(self.comment_en) - self.comment_provider = self._config.get("comment").get("select_provider") - logger.debug(self.comment_provider) - # ID查询 gokid = await self.get_gokid(name) @@ -360,14 +360,15 @@ class GOKServer: return return_data #更新参数 - params = {"id": gokid, "option": option, "key": token} + params = {"id": gokid, "option": option, "key": self.ytapi_token} # 需要提取的字段 fields = ["gametime","killcnt","deadcnt","assistcnt","gameresult","mvpcnt","losemvp","mapName", "oldMasterMatchScore","newMasterMatchScore","usedTime","winNum","failNum","roleJobName","stars","desc", "gradeGame","heroIcon","godLikeCnt", "firstBlood","hero1TripleKillCnt","hero1UltraKillCnt","hero1RampageCnt","evaluateUrlV3","mvpUrlV3"] - - + + # 锐评提取字段 + comment = ["gametime","killcnt","deadcnt","assistcnt","gameresult","mvpcnt","losemvp","gradeGame"] # 获取数据 data: Optional[List[Dict[str, Any]]] = await self._base_request("gok_zhanji", "GET", params=params) @@ -378,18 +379,15 @@ class GOKServer: # 处理返回数据 try: # 提取锐评数据 - if self.comment_en: - return_data["comment"] = {} - comment = ["gametime","killcnt","deadcnt","assistcnt","gameresult","mvpcnt","losemvp","gradeGame"] - comments = extract_fields(data['list'], comment) - comments = comments[:10] - return_data["comment"]["data"] = comments - return_data["comment"]["provider"] = self.comment_provider - return_data["comment"]["en"] = self.comment_en + return_data["comment"] = {} + comments = extract_fields(data['list'], comment) + comments = comments[:10] + return_data["comment"]["data"] = comments # 提取字段 result = extract_fields(data['list'], fields) result = result[:25] + # 数据处理 for m in result: minutes = m["usedTime"] // 60 @@ -419,8 +417,7 @@ class GOKServer: async def ziliao(self, name: str): return_data = self._init_return_data() # 获取配置中的 Token - token = self._config.get("ytapi_token", "") - if token == "": + if self.ytapi_token == "": return_data["msg"] = "系统未配置API访问Token" return return_data @@ -432,7 +429,7 @@ class GOKServer: return return_data #更新参数 - params = {"id": gokid, "key": token} + params = {"id": gokid, "key": self.ytapi_token} # 获取数据 data: Optional[List[Dict[str, Any]]] = await self._base_request("gok_ziliao", "GET", params=params, out_key="") @@ -465,13 +462,12 @@ class GOKServer: async def zhanli(self,hero: str, type: str): return_data = self._init_return_data() # 获取配置中的 Token - token = self._config.get("nyapi_token", "") - if token == "": + if self.nyapi_token == "": return_data["msg"] = "系统未配置API访问Token" return return_data #更新参数 - params = {"hero": hero, "type": type, "apikey": token} + params = {"hero": hero, "type": type, "apikey": self.nyapi_token} # 获取数据 data: Optional[List[Dict[str, Any]]] = await self._base_request("gok_zhanli", "GET", params=params) diff --git a/main.py b/main.py index 887d1b4..df27002 100644 --- a/main.py +++ b/main.py @@ -19,7 +19,7 @@ from .core.gok_data import GOKServer @register("astrbot_plugin_gok", "fxdyz", "通过接口获取王者荣耀游戏数据", - "1.0.1", + "1.0.2", "https://github.com/qsc20001102/astrbot_plugin_gok.git" ) class GokApiPlugin(Star): @@ -40,9 +40,9 @@ class GokApiPlugin(Star): with open(self.api_file_path, 'r', encoding='utf-8') as f: self.api_config = json.load(f) - # 初始化数据 # 声明指令集 self.command_map = {} + # 指令前缀功能 self.prefix_en = self.conf.get("prefix").get("enable") self.prefix_text = self.conf.get("prefix").get("text") @@ -53,6 +53,14 @@ class GokApiPlugin(Star): else: logger.info(f"未启用指令前缀功能。") + # 战绩锐评功能 + self.comment_en = self.conf.get("comment").get("enable") + self.comment_provider = self.conf.get("comment").get("select_provider") + if self.comment_en: + logger.info(f"锐评功能已经启用,模型为:{self.comment_provider}") + else: + logger.info(f"未启用锐评功能") + logger.info("GOK 插件初始化完成") @@ -80,6 +88,7 @@ class GokApiPlugin(Star): logger.info("GOK 异步插件初始化完成") + async def terminate(self): """可选择实现异步的插件销毁方法,当插件被卸载/停用时会调用。""" if self.gokfun: @@ -179,9 +188,9 @@ class GokApiPlugin(Star): def ini_command_map(self): """初始化指令集""" self.command_map = { - "王者功能": self.gok_helps, - "王者战绩": self.gok_zhanji, - "王者资料": self.gok_ziliao, + "功能": self.gok_helps, + "战绩": self.gok_zhanji, + "资料": self.gok_ziliao, "上榜战力": self.gok_zhanli, "角色查看": self.gok_user_all, "角色添加": self.gok_user_add, @@ -236,6 +245,7 @@ class GokApiPlugin(Star): async def T2I_image_and_plain_msg(self, event: AstrMessageEvent, action): """战绩定制功能""" data = await action() + # 发送渲染战绩图片 try: if data["code"] == 200: @@ -247,15 +257,16 @@ class GokApiPlugin(Star): except Exception as e: logger.error(f"功能函数执行错误: {e}") await event.send(event.plain_result("猪脑过载,请稍后再试")) + # 对战绩进行锐评 try: - if data["code"] == 200 and data["comment"]["en"]: + if data["code"] == 200 and self.comment_en: # 确定使用模型 - if data["comment"]["provider"] =="": + if self.comment_provider == "": umo = event.unified_msg_origin provider_id = await self.context.get_current_chat_provider_id(umo=umo) else: - provider_id = data["comment"]["provider"] + provider_id = self.comment_provider # 模型提示词构建 prompt = "请根据下面提供的王者荣耀最近10把的战绩数据,用简短的一句话进行锐评吐槽。" diff --git a/templates/helps.html b/templates/helps.html index 0ff0959..421160a 100644 --- a/templates/helps.html +++ b/templates/helps.html @@ -135,9 +135,9 @@
基础功能
-
王者功能
王者功能
-
王者战绩
王者战绩 角色/营地ID
-
王者资料
王者资料 角色/营地ID
+
功能
功能
+
对局战绩
战绩 角色/营地ID
+
角色资料
资料 角色/营地ID
上榜战力
上榜战力 英雄 大区
角色查看
角色查看
角色添加
角色添加 营地ID 角色
@@ -150,7 +150,8 @@
使用提示:
1. 指令里面的角色指的是自定义的查询名称
- 2. 战绩和资料的指令必须 token 可以使用
+ 2. 战绩和资料的指令必须配置令牌才可使用
+ 3. 如果启用指令前缀功能,需要在指令前面加上设定的前缀