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