This commit is contained in:
qsc
2026-02-14 20:01:28 +08:00
parent 2548da9af3
commit 5fca36d1ed
5 changed files with 56 additions and 56 deletions
+6 -14
View File
@@ -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。
+2 -2
View File
@@ -6,13 +6,13 @@
"enable": {
"description": "是否启用",
"type": "bool",
"default": false,
"default": true,
"hint": "是否启用指令前缀检查功能"
},
"text": {
"description": "前缀内容",
"type": "string",
"default": "王者荣耀",
"default": "王者",
"hint": "为了避免和其他插件的指令冲突可以增加指令的前缀,为空默认值为王者。"
}
}
+19 -23
View File
@@ -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
# 提取字段
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)
+19 -8
View File
@@ -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把的战绩数据,用简短的一句话进行锐评吐槽。"
+5 -4
View File
@@ -135,9 +135,9 @@
<div class="group">
<div class="group-title">基础功能</div>
<div class="command-grid">
<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">王者战绩 角色/营地ID</div></div>
<div class="command"><div class="cmd-name">王者资料</div><div class="cmd-usage">王者资料 角色/营地ID</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">战绩 角色/营地ID</div></div>
<div class="command"><div class="cmd-name">角色资料</div><div class="cmd-usage">资料 角色/营地ID</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">角色添加 营地ID 角色</div></div>
@@ -150,7 +150,8 @@
<div class="tip">
<strong>使用提示:</strong><br>
1. 指令里面的角色指的是自定义的查询名称<br>
2. 战绩和资料的指令必须 token 可以使用<br>
2. 战绩和资料的指令必须配置令牌才可使用<br>
3. 如果启用指令前缀功能,需要在指令前面加上设定的前缀<br>
</div>
</div>