This commit is contained in:
2026-01-25 14:05:17 +08:00
parent 8d379af4e6
commit 4a6059134b
9 changed files with 495 additions and 448 deletions
+43 -448
View File
@@ -16,7 +16,7 @@ import astrbot.api.message_components as Comp
from .core.jx3_data import JX3Service
from .core.async_task import AsyncTask
from .core.jx3_commands import JX3Commands
@register("astrbot_plugin_jx3",
"fxdyz",
@@ -53,9 +53,10 @@ class Jx3ApiPlugin(Star):
logger.info(f"未启用指令前缀功能。")
# 默认服务器
self.server = self.conf.get("server", "梦江南")
# 声明指令集
self.command_map = {}
logger.info(f"配置加载默认服务器:{self.server}")
# 指令集
self.ini_command_map()
logger.info(f"指令集初始完成。")
logger.info("jx3api插件初始化完成")
@@ -80,12 +81,16 @@ class Jx3ApiPlugin(Star):
self.jx3fun = JX3Service(self.api_config, self.conf)
self.at = AsyncTask(self.context, self.conf, self.jx3fun)
await self.at.init_tasks()
self.jx3com = JX3Commands(self.jx3fun,self.at,self.server)
except Exception as e:
if hasattr(self, "at"):
await self.at.destroy()
logger.error(f"功能模块初始化失败: {e}")
raise
# 指令集
self.ini_command_map()
logger.info("jx3api 异步插件初始化完成")
@@ -193,15 +198,18 @@ class Jx3ApiPlugin(Star):
@filter.event_message_type(filter.EventMessageType.ALL)
async def on_all_message(self, event: AstrMessageEvent):
"""解析所有消息"""
if not self.command_map:
logger.debug("插件尚未初始化完成,忽略消息")
return
parts = self.parse_message(event.message_str)
if not parts:
logger.debug("未触发指令")
logger.debug("未触发指令,忽略消息")
return
cmd, *args = parts
handler = self.command_map.get(cmd)
if not handler:
logger.debug("指令函数为空")
logger.debug("指令函数为空,忽略消息")
return
try:
@@ -215,453 +223,40 @@ class Jx3ApiPlugin(Star):
def ini_command_map(self):
"""初始化指令集"""
self.command_map = {
"功能": self.jx3_helps,
"日常": self.jx3_richang,
"日常预测": self.jx3_richangyuche,
"名望": self.jx3_xingxiashijian,
"开服": self.jx3_kaifu,
"状态": self.jx3_zhuangtai,
"骚话": self.jx3_shaohua,
"技改": self.jx3_jigai,
"沙盘": self.jx3_shapan,
"奇遇统计": self.jx3_qufuqiyu,
"奇遇攻略": self.jx3_qiyugonglue,
"金价": self.jx3_jinjia,
"交易行": self.jx3_jiaoyihang,
"名片": self.jx3_jueshemingpian,
"随机名片": self.jx3_shuijimingpian,
"烟花": self.jx3_yanhuachaxun,
"的卢": self.jx3_dilujilu,
"招募": self.jx3_tuanduizhaomu,
"战绩": self.jx3_zhanji,
"奇遇": self.jx3_qiyu,
"阵营拍卖": self.jx3_zhengyingpaimai,
"扶摇九天": self.jx3_fuyaojjiutian,
"刷马": self.jx3_shuma,
"骗子": self.jx3_pianzhi,
"八卦": self.jx3_bagua,
"开服监控": self.jx3_kaifhujiank,
"新闻推送": self.jx3_xinwenzhixun,
"刷马推送": self.jx3_shuamamsg,
"赤兔推送": self.jx3_chitusg,
"功能": self.jx3com.jx3_helps,
"日常": self.jx3com.jx3_richang,
"日常预测": self.jx3com.jx3_richangyuche,
"名望": self.jx3com.jx3_xingxiashijian,
"开服": self.jx3com.jx3_kaifu,
"状态": self.jx3com.jx3_zhuangtai,
"骚话": self.jx3com.jx3_shaohua,
"技改": self.jx3com.jx3_jigai,
"沙盘": self.jx3com.jx3_shapan,
"奇遇统计": self.jx3com.jx3_qufuqiyu,
"奇遇攻略": self.jx3com.jx3_qiyugonglue,
"金价": self.jx3com.jx3_jinjia,
"物价": self.jx3com.jx3_wujia,
"交易行": self.jx3com.jx3_jiaoyihang,
"名片": self.jx3com.jx3_jueshemingpian,
"随机名片": self.jx3com.jx3_shuijimingpian,
"烟花": self.jx3com.jx3_yanhuachaxun,
"的卢": self.jx3com.jx3_dilujilu,
"招募": self.jx3com.jx3_tuanduizhaomu,
"战绩": self.jx3com.jx3_zhanji,
"奇遇": self.jx3com.jx3_qiyu,
"阵营拍卖": self.jx3com.jx3_zhengyingpaimai,
"扶摇九天": self.jx3com.jx3_fuyaojjiutian,
"刷马": self.jx3com.jx3_shuma,
"骗子": self.jx3com.jx3_pianzhi,
"八卦": self.jx3com.jx3_bagua,
"开服监控": self.jx3com.jx3_kaifhujiank,
"新闻推送": self.jx3com.jx3_xinwenzhixun,
"刷马推送": self.jx3com.jx3_shuamamsg,
"赤兔推送": self.jx3com.jx3_chitusg,
}
async def jx3_helps(self, event: AstrMessageEvent):
"""剑三 功能"""
data = await self.jx3fun.helps()
try:
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"])
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
yield event.plain_result("猪脑过载,请稍后再试")
async def jx3_richang(self, event: AstrMessageEvent,server: str = "" ,num: int = 0):
"""剑三 日常 服务器 天数"""
try:
data= await self.jx3fun.richang(self.serverdefault(server),num)
if data["code"] == 200:
yield event.plain_result(data["data"])
else:
yield event.plain_result(data["msg"])
return
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
yield event.plain_result("猪脑过载,请稍后再试")
async def jx3_richangyuche(self, event: AstrMessageEvent):
"""剑三 日常预测"""
try:
data= await self.jx3fun.richangyuche()
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("猪脑过载,请稍后再试")
async def jx3_xingxiashijian(self, event: AstrMessageEvent,name: str = "穹野卫"):
"""剑三 名望"""
try:
data= await self.jx3fun.xingxiashijian(name)
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("猪脑过载,请稍后再试")
async def jx3_kaifu(self, event: AstrMessageEvent,server: str = ""):
"""剑三 开服 服务器"""
try:
data= await self.jx3fun.kaifu(self.serverdefault(server))
if data["code"] == 200:
yield event.plain_result(data["data"])
else:
yield event.plain_result(data["msg"])
return
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
yield event.plain_result("猪脑过载,请稍后再试")
async def jx3_zhuangtai(self, event: AstrMessageEvent):
"""剑三 状态"""
try:
data= await self.jx3fun.zhuangtai()
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("猪脑过载,请稍后再试")
async def jx3_shaohua(self, event: AstrMessageEvent,):
"""剑三 骚话"""
try:
data= await self.jx3fun.shaohua()
if data["code"] == 200:
yield event.plain_result(data["data"])
else:
yield event.plain_result(data["msg"])
return
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
yield event.plain_result("猪脑过载,请稍后再试")
async def jx3_jigai(self, event: AstrMessageEvent,):
"""剑三 技改"""
try:
data= await self.jx3fun.jigai()
if data["code"] == 200:
yield event.plain_result(data["data"])
else:
yield event.plain_result(data["msg"])
return
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
yield event.plain_result("猪脑过载,请稍后再试")
async def jx3_shapan(self, event: AstrMessageEvent,server: str = ""):
"""剑三 沙盘 服务器"""
try:
data= await self.jx3fun.shapan(self.serverdefault(server))
if data["code"] == 200:
yield event.image_result(data["data"])
else:
yield event.plain_result(data["msg"])
return
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
yield event.plain_result("猪脑过载,请稍后再试")
async def jx3_qufuqiyu(self, event: AstrMessageEvent,adventureName: str = "阴阳两界", server: str = ""):
"""剑三 奇遇统计 奇遇名称 服务器"""
try:
data= await self.jx3fun.qiyu(adventureName,self.serverdefault(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("猪脑过载,请稍后再试")
async def jx3_qiyugonglue(self, event: AstrMessageEvent,name: str):
"""剑三 奇遇攻略 奇遇名称"""
try:
data= await self.jx3fun.qiyugonglue(name)
if data["code"] == 200:
url = await self.html_render(data["temp"], {}, options={})
chain = [
Comp.Plain(f"{data['data']} \n"),
Comp.Image.fromURL(f"{url}")
]
yield event.chain_result(chain)
else:
yield event.plain_result(data["msg"])
return
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
yield event.plain_result("猪脑过载,请稍后再试")
async def jx3_jinjia(self, event: AstrMessageEvent,server: str = "", limit:str = "15"):
"""剑三 金价 服务器"""
try:
data= await self.jx3fun.jinjia( self.serverdefault(server),limit)
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("猪脑过载,请稍后再试")
async def jx3_wujia(self, event: AstrMessageEvent,Name: str = "秃盒", server: str = ""):
"""剑三 物价 外观名称"""
try:
data=await self.jx3fun.wujia(Name, self.serverdefault(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("猪脑过载,请稍后再试")
async def jx3_jiaoyihang(self, event: AstrMessageEvent,Name: str = "守缺式",server: str = ""):
"""剑三 交易行 物品名称 服务器"""
try:
data=await self.jx3fun.jiaoyihang(Name, self.serverdefault(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("猪脑过载,请稍后再试")
async def jx3_jueshemingpian(self, event: AstrMessageEvent, name: str = "飞翔大野猪", server: str = ""):
"""剑三 名片 角色 服务器"""
try:
data= await self.jx3fun.jueshemingpian( self.serverdefault(server),name)
if data["code"] == 200:
chain = [
Comp.Plain(f"{data['data']['serverName']}--{data['data']['roleName']} \n"),
Comp.Image.fromURL(f"{data['data']['showAvatar']}")
]
yield event.chain_result(chain)
else:
yield event.plain_result(data["msg"])
return
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
yield event.plain_result("猪脑过载,请稍后再试")
async def jx3_shuijimingpian(self, event: AstrMessageEvent,force: str = "万花", body: str = "萝莉", server: str = ""):
"""剑三 随机名片 职业 体型 服务器"""
try:
data= await self.jx3fun.shuijimingpian(force,body, self.serverdefault(server))
if data["code"] == 200:
chain = [
Comp.Plain(f"{data['data']['serverName']}--{data['data']['roleName']} \n"),
Comp.Image.fromURL(f"{data['data']['showAvatar']}"),
Comp.Plain(f"{force}--{body} \n")
]
yield event.chain_result(chain)
else:
yield event.plain_result(data["msg"])
return
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
yield event.plain_result("猪脑过载,请稍后再试")
async def jx3_yanhuachaxun(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = ""):
"""剑三 烟花 角色 服务器"""
try:
data= await self.jx3fun.yanhuachaxun( self.serverdefault(server),name)
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("猪脑过载,请稍后再试")
async def jx3_dilujilu(self, event: AstrMessageEvent,server: str = ""):
"""剑三 的卢 服务器"""
try:
data= await self.jx3fun.dilujilu( self.serverdefault(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("猪脑过载,请稍后再试")
async def jx3_tuanduizhaomu(self, event: AstrMessageEvent,keyword: str = "25人普通会战弓月城", server: str = ""):
"""剑三 招募 副本 服务器"""
try:
data= await self.jx3fun.tuanduizhaomu( self.serverdefault(server),keyword)
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("猪脑过载,请稍后再试")
async def jx3_zhanji(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = "", mode:str = "33"):
"""剑三 战绩 角色 服务器 类型"""
try:
data= await self.jx3fun.zhanji(name, self.serverdefault(server),mode)
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("猪脑过载,请稍后再试")
async def jx3_qiyu(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = ""):
"""剑三 奇遇 角色名称 服务器"""
try:
data= await self.jx3fun.juesheqiyu(name, self.serverdefault(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("猪脑过载,请稍后再试")
async def jx3_zhengyingpaimai(self, event: AstrMessageEvent,name: str = "玄晶", server: str = ""):
"""剑三 阵营拍卖 物品名称 服务器"""
try:
data= await self.jx3fun.zhengyingpaimai( self.serverdefault(server), name)
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("猪脑过载,请稍后再试")
async def jx3_fuyaojjiutian(self, event: AstrMessageEvent,server: str = ""):
"""剑三 扶摇九天 服务器"""
try:
data= await self.jx3fun.fuyaojjiutian( self.serverdefault(server))
if data["code"] == 200:
yield event.plain_result(data["data"])
else:
yield event.plain_result(data["msg"])
return
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
yield event.plain_result("猪脑过载,请稍后再试")
async def jx3_shuma(self, event: AstrMessageEvent,server: str = ""):
"""剑三 刷马 服务器"""
try:
data= await self.jx3fun.shuma( self.serverdefault(server))
if data["code"] == 200:
yield event.plain_result(data["data"])
else:
yield event.plain_result(data["msg"])
return
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
yield event.plain_result("猪脑过载,请稍后再试")
async def jx3_pianzhi(self, event: AstrMessageEvent,qq: str):
"""剑三 骗子 QQ"""
try:
data= await self.jx3fun.pianzhi(qq)
if data["code"] == 200:
yield event.plain_result(data["data"])
else:
yield event.plain_result(data["msg"])
return
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
yield event.plain_result("猪脑过载,请稍后再试")
async def jx3_bagua(self, event: AstrMessageEvent,type: str):
"""剑三 八卦 类型"""
try:
data= await self.jx3fun.bagua(type)
if data["code"] == 200:
yield event.plain_result(data["data"])
else:
yield event.plain_result(data["msg"])
return
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
yield event.plain_result("猪脑过载,请稍后再试")
async def jx3_kaifhujiank(self, event: AstrMessageEvent):
"""剑三 开服监控"""
return_msg = await self.at.get_task_info("kfjk")
yield event.plain_result(return_msg)
async def jx3_xinwenzhixun(self, event: AstrMessageEvent):
"""剑三 新闻推送"""
return_msg = await self.at.get_task_info("xwzx")
yield event.plain_result(return_msg)
async def jx3_shuamamsg(self, event: AstrMessageEvent):
"""剑三 刷马推送"""
return_msg = await self.at.get_task_info("smxx")
yield event.plain_result(return_msg)
async def jx3_chitusg(self, event: AstrMessageEvent):
"""剑三 赤兔推送"""
return_msg = await self.at.get_task_info("ctxx")
yield event.plain_result(return_msg)