This commit is contained in:
qsc
2025-09-29 13:26:30 +08:00
parent 4398ad32bc
commit f8377a56eb
3 changed files with 132 additions and 113 deletions
+17
View File
@@ -30,6 +30,23 @@
"params":{ "params":{
"serverName": "眉间雪" "serverName": "眉间雪"
} }
},
"aijx3_jinjia":{
"url":"https://www.jianxiachaguan.cn/api2/aijx3-jxcg/game/get-gold",
"method":"POST",
"description":"获取剑网三某区服金价",
"params":{
"serverName": "眉间雪"
}
},
"aijx3_qiyu":{
"url":"https://www.jianxiachaguan.cn/api2/aijx3-jxcg/game/get-adventure-record",
"method":"POST",
"description":"获取剑网三某区服奇遇触发记录",
"params":{
"adventureName": "阴阳两界",
"serverName": "眉间雪"
}
} }
} }
+83 -2
View File
@@ -1,8 +1,9 @@
from datetime import datetime
from astrbot.api import logger from astrbot.api import logger
from astrbot.api.event import filter, AstrMessageEvent, MessageEventResult
from .api_data import APIClient from .api_data import APIClient
from .load_template import load_template
class JX3Function: class JX3Function:
def __init__(self, api_config): def __init__(self, api_config):
@@ -118,4 +119,84 @@ class JX3Function:
except Exception as e: except Exception as e:
logger.error(f"处理数据时出错: {e}") logger.error(f"处理数据时出错: {e}")
return_data["msg"] = "处理接口返回信息时出错" return_data["msg"] = "处理接口返回信息时出错"
return return_data
async def jinjia(self, server: str = "眉间雪"):
return_data = {
"code": 0,
"msg": "功能函数未执行",
"data": {}
}
#在配置文件中获取接口配置
api_config = self.__api_config["aijx3_jinjia"]
#更新参数
api_config["params"]["serverName"] = server
# 获取数据
data = await self.__api.post(api_config["url"],api_config["params"],"data")
if not data:
return_data["msg"] = "获取接口信息失败"
return return_data
# 加载模板
try:
return_data["temp"] = load_template("jinjia.html")
except FileNotFoundError as e:
logger.error(f"加载模板失败: {e}")
return_data["msg"] = "系统错误:模板文件不存在"
return return_data
# 准备模板渲染数据
try:
return_data["data"] = {
"items": data,
"server": api_config["params"]["serverName"],
"update_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
}
except Exception as e:
logger.error(f"处理数据时出错: {e}")
return_data["msg"] = "系统错误:模板渲染数据准备失败"
return return_data
return_data["code"] = 200
return return_data
async def qiyu(self, adventureName: str = "阴阳两界", serverName: str = "眉间雪"):
return_data = {
"code": 0,
"msg": "功能函数未执行",
"data": {}
}
#在配置文件中获取接口配置
api_config = self.__api_config["aijx3_qiyu"]
#更新参数
api_config["params"]["adventureName"] = adventureName
api_config["params"]["serverName"] = serverName
# 获取数据
data = await self.__api.post(api_config["url"],api_config["params"],"data")
if not data:
return_data["msg"] = "获取接口信息失败"
return return_data
# 格式化时间
for item in data:
if "time" in item:
item["time"] = datetime.fromtimestamp(item["time"]/1000).strftime("%Y-%m-%d %H:%M:%S")
# 加载模板
try:
return_data["temp"] = load_template("qiyuliebiao.html")
except FileNotFoundError as e:
logger.error(f"加载模板失败: {e}")
return_data["msg"] = "系统错误:模板文件不存在"
return return_data
# 准备模板渲染数据
try:
return_data["data"] = {
"items": data,
"server": serverName,
"update_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
,"qiyuname": adventureName
}
except Exception as e:
logger.error(f"处理数据时出错: {e}")
return_data["msg"] = "系统错误:模板渲染数据准备失败"
return return_data
return_data["code"] = 200
return return_data return return_data
+32 -111
View File
@@ -9,7 +9,6 @@ from astrbot.api import AstrBotConfig
from .core.load_template import load_template from .core.load_template import load_template
from .core.jx3_data import jx3_data_jiaoyihang,jx3_data_wujia from .core.jx3_data import jx3_data_jiaoyihang,jx3_data_wujia
from .core.api_data import APIClient,api_data_get, api_data_post
from .core.sql_data import sql_data_searchdata,sql_data_select from .core.sql_data import sql_data_searchdata,sql_data_select
from .core.jx3_Function import JX3Function from .core.jx3_Function import JX3Function
@@ -105,6 +104,38 @@ class Jx3ApiPlugin(Star):
yield event.plain_result("猪脑过载,请稍后再试") yield event.plain_result("猪脑过载,请稍后再试")
@jx3.command("金价")
async def jx3_jinjia(self, event: AstrMessageEvent,server: str = "眉间雪"):
"""剑三 金价 服务器"""
try:
data= await self.jx3fun.jinjia(server)
if data["code"] == 200:
url = await self.html_render(data["temp"], data["data"], options={})
yield event.image_result(url)
else:
yield event.plain_result(data["msg"])
return
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
yield event.plain_result("猪脑过载,请稍后再试")
@jx3.command("奇遇")
async def jx3_qiyu(self, event: AstrMessageEvent,adventureName: str = "阴阳两界", serverName: str = "眉间雪"):
"""剑三 奇遇 奇遇名称 服务器"""
try:
data= await self.jx3fun.qiyu(adventureName,serverName)
if data["code"] == 200:
url = await self.html_render(data["temp"], data["data"], options={})
yield event.image_result(url)
else:
yield event.plain_result(data["msg"])
return
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
yield event.plain_result("猪脑过载,请稍后再试")
@filter.command("剑三交易行") @filter.command("剑三交易行")
async def jx3_data_jiaoyihang(self, event: AstrMessageEvent): async def jx3_data_jiaoyihang(self, event: AstrMessageEvent):
"""剑三交易行 物品名称 服务器""" """剑三交易行 物品名称 服务器"""
@@ -161,116 +192,6 @@ class Jx3ApiPlugin(Star):
yield event.plain_result("查询交易行数据时出错,请稍后再试") yield event.plain_result("查询交易行数据时出错,请稍后再试")
@filter.command("剑三金价")
async def jx3_jinjia(self, event: AstrMessageEvent):
"""剑三金价 服务器"""
# 接口URL
custom_url = "https://www.jianxiachaguan.cn/api2/aijx3-jxcg/game/get-gold"
# 接口参数
params = {
"serverName": "眉间雪" # 默认服务器
}
# 获取消息内容
message_str = event.message_str.strip()
parts = message_str.split()
# 解析消息内容
if len(parts) > 1:
params["serverName"] = parts[1] # 服务器
# 获取数据
data = api_data_post(custom_url,params,"data")
if not data:
yield event.plain_result("获取获取接口信息失败,请稍后再试")
return
# 处理返回数据
try:
# 加载模板
try:
template_content = load_template("jinjia.html")
except FileNotFoundError as e:
logger.error(f"加载模板失败: {e}")
yield event.plain_result("系统错误:模板文件不存在")
return
# 准备模板渲染数据
render_data = {
"items": data,
"server": params["serverName"],
"update_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
}
url = await self.html_render(template_content, render_data, options={})
yield event.image_result(url)
except Exception as e:
logger.error(f"处理数据时出错: {e}")
yield event.plain_result("处理接口返回信息时出错")
@filter.command("剑三奇遇")
async def jx3_qiyu(self, event: AstrMessageEvent):
"""剑三奇遇 奇遇名称 服务器"""
# 接口URL
custom_url = "https://www.jianxiachaguan.cn/api2/aijx3-jxcg/game/get-adventure-record"
# 接口参数
params = {
"adventureName": "阴阳两界", # 默奇遇
"serverName": "眉间雪" # 默认服务器
}
# 获取消息内容
message_str = event.message_str.strip()
parts = message_str.split()
# 解析消息内容
if len(parts) > 1:
params["adventureName"] = parts[1] # 奇遇名称
if len(parts) > 2:
params["serverName"] = parts[2] # 第二个参数为服务器
# 获取数据
data = api_data_post(custom_url,params,"data")
if not data:
yield event.plain_result("获取获取接口信息失败,请稍后再试")
return
#数据处理
for item in data:
# 格式化时间
if "time" in item:
dt = datetime.fromtimestamp(item["time"]/1000)
item["time"] = dt.strftime("%Y-%m-%d %H:%M:%S")
# 传入模板渲染
try:
# 加载模板
try:
template_content = load_template("qiyuliebiao.html")
except FileNotFoundError as e:
logger.error(f"加载模板失败: {e}")
yield event.plain_result("系统错误:模板文件不存在")
return
# 准备模板渲染数据
render_data = {
"items": data,
"server": params["serverName"],
"update_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
,"qiyuname": params["adventureName"]
}
url = await self.html_render(template_content, render_data, options={})
yield event.image_result(url)
except Exception as e:
logger.error(f"处理数据时出错: {e}")
yield event.plain_result("处理接口返回信息时出错")
@filter.command("剑三外观数据同步") @filter.command("剑三外观数据同步")
async def jx3_SearchData(self, event: AstrMessageEvent): async def jx3_SearchData(self, event: AstrMessageEvent):
"""剑三外观数据同步""" """剑三外观数据同步"""