From 0630492d951330ac9e2802be3c7776f74a30a59f Mon Sep 17 00:00:00 2001 From: qsc Date: Sat, 14 Feb 2026 20:59:45 +0800 Subject: [PATCH] ok --- README.md | 10 - core/jx3_commands.py | 362 ----------------------------------- core/jx3_data.py | 2 +- main.py | 437 +++++++++++++++++++++++++++++++++++++------ 4 files changed, 382 insertions(+), 429 deletions(-) delete mode 100644 core/jx3_commands.py diff --git a/README.md b/README.md index 3ad29fd..9063140 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,5 @@ # 剑网三数据查询工具 -## 目录 - -- [剑网三数据查询工具](#-剑网三数据查询工具) - - [目录](#-目录) - - [简介](#-简介) - - [更新记录](#-更新记录) - - [功能特点](#-功能特点) - - [插件配置](#-插件配置) - - [使用方式](#-使用方式) - ## 简介 仿照剑网三主流的机器人写了个插件,主要是自用。 diff --git a/core/jx3_commands.py b/core/jx3_commands.py deleted file mode 100644 index ee52fa8..0000000 --- a/core/jx3_commands.py +++ /dev/null @@ -1,362 +0,0 @@ -# pyright: reportArgumentType=false -# pyright: reportAttributeAccessIssue=false -# pyright: reportIndexIssue=false -# pyright: reportOptionalMemberAccess=false -import json -import shutil -import pathlib -import inspect -from pathlib import Path -from typing import Union -import asyncio - -from astrbot.api.event import filter, AstrMessageEvent, MessageEventResult, MessageChain -from astrbot.api.star import Context, Star, register, StarTools -from astrbot.api import logger -from astrbot.api import AstrBotConfig -import astrbot.api.message_components as Comp -from astrbot.core.utils.session_waiter import ( - SessionController, - session_waiter, -) - -from .jx3_data import JX3Service -from .async_task import AsyncTask -from .bilei_data import BiLeidata - -class JX3Commands(Star): - def __init__(self, jx3_data:JX3Service, at:AsyncTask, bilei:BiLeidata, server:str): - self.jx3fun = jx3_data - self.jx3at = at - self.bilie = bilei - self.server = server - - - def serverdefault(self,server): - """加载配置默认服务器""" - if server == "": - return self.server - return server - - - async def plain_msg(self, event: AstrMessageEvent, action): - """最终将数据整理成文本发送""" - data= await action() - try: - if data["code"] == 200: - await event.send( event.plain_result(data["data"])) - else: - await event.send(event.plain_result(data["msg"])) - except Exception as e: - logger.error(f"功能函数执行错误: {e}") - await event.send(event.plain_result("猪脑过载,请稍后再试")) - - - async def T2I_image_msg(self, event: AstrMessageEvent, action): - """最终将数据渲染成图片发送""" - data = await action() - try: - if data["code"] == 200: - url = await self.html_render(data["temp"], data["data"], options={}) - await event.send(event.image_result(url)) - else: - await event.send(event.plain_result(data["msg"])) - - except Exception as e: - logger.error(f"功能函数执行错误: {e}") - await event.send(event.plain_result("猪脑过载,请稍后再试")) - - - async def image_msg(self, event: AstrMessageEvent, action): - """最终将数据整理成图片发送""" - data = await action() - try: - if data["code"] == 200: - await event.send(event.image_result(data["data"])) - else: - await event.send(event.plain_result(data["msg"])) - - except Exception as e: - logger.error(f"功能函数执行错误: {e}") - await event.send(event.plain_result("猪脑过载,请稍后再试")) - - - async def jx3_helps(self, event: AstrMessageEvent): - """剑三 功能""" - return await self.T2I_image_msg(event, self.jx3fun.helps) - - - async def jx3_richang(self, event: AstrMessageEvent,server: str = "" ,num: int = 0): - """剑三 日常 服务器 天数""" - return await self.plain_msg(event, lambda: self.jx3fun.richang(self.serverdefault(server),num)) - - - async def jx3_richangyuche(self, event: AstrMessageEvent): - """剑三 日常预测""" - return await self.T2I_image_msg(event, self.jx3fun.richangyuche) - - - async def jx3_xingxiashijian(self, event: AstrMessageEvent,name: str = "穹野卫"): - """剑三 名望""" - return await self.T2I_image_msg(event, lambda: self.jx3fun.xingxiashijian(name)) - - - async def jx3_kaifu(self, event: AstrMessageEvent,server: str = ""): - """剑三 开服 服务器""" - return await self.plain_msg(event, lambda: self.jx3fun.kaifu(self.serverdefault(server))) - - - async def jx3_zhuangtai(self, event: AstrMessageEvent): - """剑三 状态""" - return await self.T2I_image_msg(event, self.jx3fun.zhuangtai) - - - async def jx3_shaohua(self, event: AstrMessageEvent,): - """剑三 骚话""" - return await self.plain_msg(event, self.jx3fun.shaohua) - - - async def jx3_jigai(self, event: AstrMessageEvent,): - """剑三 技改""" - return await self.plain_msg(event, self.jx3fun.jigai) - - - async def jx3_xinwen(self, event: AstrMessageEvent,num:int = 5): - """剑三 新闻""" - return await self.plain_msg(event, lambda: self.jx3fun.xinwen(num)) - - - async def jx3_keju(self, event: AstrMessageEvent,subject: str, limit: int = 5): - """剑三 科举""" - return await self.plain_msg(event, lambda: self.jx3fun.keju(subject,limit)) - - - async def jx3_huajia(self, event: AstrMessageEvent, name: str= "", server: str = "", map: str= ""): - """剑三 花价 名称 服务器 地图""" - return await self.T2I_image_msg(event, lambda: self.jx3fun.huajia(self.serverdefault(server),name,map)) - - - async def jx3_zhuangshi(self, event: AstrMessageEvent, name: str): - """剑三 装饰 名称""" - return await self.T2I_image_msg(event, lambda: self.jx3fun.zhuangshi(name)) - - - async def jx3_qiwu(self, event: AstrMessageEvent, name: str): - """剑三 器物 地图名称""" - return await self.T2I_image_msg(event, lambda: self.jx3fun.qiwu(name)) - - - async def jx3_shapan(self, event: AstrMessageEvent,server: str = ""): - """剑三 沙盘 服务器""" - return await self.image_msg(event, lambda: self.jx3fun.shapan(self.serverdefault(server))) - - - async def jx3_qufuqiyu(self, event: AstrMessageEvent,adventureName: str = "阴阳两界", server: str = ""): - """剑三 奇遇统计 奇遇名称 服务器""" - return await self.T2I_image_msg(event, lambda: self.jx3fun.qiyu(adventureName,self.serverdefault(server))) - - - async def jx3_qiyugonglue(self, event: AstrMessageEvent,name: str): - """剑三 奇遇攻略 奇遇名称""" - return await self.T2I_image_msg(event, lambda: self.jx3fun.qiyugonglue(name)) - - - async def jx3_hong(self, event: AstrMessageEvent, kungfu: str = "易筋经"): - """剑三 宏 心法""" - # 获取宏列表 - try: - data = await self.jx3fun.hong1(kungfu) - if data["code"] == 200: - await event.send(event.plain_result(data["msg"])) - # 获取用户ID - user_id = event.get_sender_id() - # 等等用户回复 - @session_waiter(timeout=30) - async def macro_select_waiter(controller: SessionController,new_event: AstrMessageEvent): - if new_event.get_sender_id() != user_id: - return - - msg = new_event.get_message_str().strip() - - if not msg.isdigit(): - await new_event.send( - MessageChain().message("输入异常,结束会话") - ) - controller.stop() - return - - num = int(msg) - if num < 1 or num > data["data"]["num"]: - await new_event.send( - MessageChain().message("无效序号,结束会话") - ) - controller.stop() - return - - try: - data1 = await self.jx3fun.hong2(data["data"]["pid"][num]) - if data1["code"] != 200: - await new_event.send( - MessageChain().message("获取详细宏数据失败") - ) - controller.stop() - return - - chain = MessageChain() - if data1["temp"] != "": - url = await self.html_render(data1["temp"], {}, options={}) - chain.url_image(url) - - msg_text = data1["data"] - chain.message(msg_text) - await new_event.send(chain) - - except Exception as e: - logger.error(f"功能函数执行错误: {e}") - await new_event.send( - MessageChain().message("猪脑过载,请稍后再试") - ) - - controller.stop() - - try: - await macro_select_waiter(event) - except TimeoutError: - await event.send(event.plain_result("选择宏超时,已结束会话")) - except Exception: - logger.error("宏选择发生异常", exc_info=True) - else: - await event.send(event.plain_result(f"未搜索到与【{kungfu}】相关的宏")) - return - except Exception as e: - logger.error(f"功能函数执行错误: {e}") - await event.send(event.plain_result("猪脑过载,请稍后再试")) - - - async def jx3_peizhuang(self, event: AstrMessageEvent,name: str = "易筋经", tags: str = ""): - """剑三 配装 心法""" - return await self.plain_msg(event, lambda: self.jx3fun.peizhuang( name,tags)) - - - async def jx3_jinjia(self, event: AstrMessageEvent,server: str = "", limit:str = "15"): - """剑三 金价 服务器""" - return await self.T2I_image_msg(event, lambda: self.jx3fun.jinjia( self.serverdefault(server),limit)) - - - async def jx3_wujia(self, event: AstrMessageEvent,Name: str = "秃盒", server: str = ""): - """剑三 物价 外观名称""" - return await self.T2I_image_msg(event, lambda: self.jx3fun.wujia(Name, self.serverdefault(server))) - - - async def jx3_jiaoyihang(self, event: AstrMessageEvent,Name: str = "守缺式",server: str = ""): - """剑三 交易行 物品名称 服务器""" - return await self.T2I_image_msg(event, lambda: self.jx3fun.jiaoyihang(Name, self.serverdefault(server))) - - - async def jx3_jueshemingpian(self, event: AstrMessageEvent, name: str = "飞翔大野猪", server: str = ""): - """剑三 名片 角色 服务器""" - return await self.image_msg(event, lambda: self.jx3fun.jueshemingpian( self.serverdefault(server),name)) - - - async def jx3_shuijimingpian(self, event: AstrMessageEvent,force: str = "万花", body: str = "萝莉", server: str = ""): - """剑三 随机名片 职业 体型 服务器""" - return await self.image_msg(event, lambda: self.jx3fun.shuijimingpian(force,body, self.serverdefault(server))) - - - async def jx3_yanhuachaxun(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = ""): - """剑三 烟花 角色 服务器""" - return await self.T2I_image_msg(event, lambda: self.jx3fun.yanhuachaxun( self.serverdefault(server),name)) - - - async def jx3_dilujilu(self, event: AstrMessageEvent,server: str = ""): - """剑三 的卢 服务器""" - return await self.T2I_image_msg(event, lambda: self.jx3fun.dilujilu( self.serverdefault(server))) - - - async def jx3_tuanduizhaomu(self, event: AstrMessageEvent,keyword: str = "25人普通会战弓月城", server: str = ""): - """剑三 招募 副本 服务器""" - return await self.T2I_image_msg(event, lambda: self.jx3fun.tuanduizhaomu( self.serverdefault(server),keyword)) - - - async def jx3_zhanji(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = "", mode:str = "33"): - """剑三 战绩 角色 服务器 类型""" - return await self.T2I_image_msg(event, lambda: self.jx3fun.zhanji(name, self.serverdefault(server),mode)) - - - async def jx3_qiyu(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = ""): - """剑三 奇遇 角色名称 服务器""" - return await self.T2I_image_msg(event, lambda: self.jx3fun.juesheqiyu(name, self.serverdefault(server))) - - - async def jx3_zhengyingpaimai(self, event: AstrMessageEvent,name: str = "玄晶", server: str = ""): - """剑三 阵营拍卖 物品名称 服务器""" - return await self.T2I_image_msg(event, lambda: self.jx3fun.zhengyingpaimai( self.serverdefault(server), name)) - - - async def jx3_fuyaojjiutian(self, event: AstrMessageEvent,server: str = ""): - """剑三 扶摇九天 服务器""" - return await self.plain_msg(event, lambda: self.jx3fun.fuyaojjiutian( self.serverdefault(server))) - - - async def jx3_shuma(self, event: AstrMessageEvent,server: str = ""): - """剑三 刷马 服务器""" - return await self.plain_msg(event, lambda: self.jx3fun.shuma( self.serverdefault(server))) - - - async def jx3_pianzhi(self, event: AstrMessageEvent,qq: str): - """剑三 骗子 QQ""" - return await self.plain_msg(event, lambda: self.jx3fun.pianzhi(qq)) - - - async def jx3_bagua(self, event: AstrMessageEvent,name: str,text: str): - """剑三 八卦 类型""" - return await self.plain_msg(event, lambda: self.jx3fun.bagua(name)) - - - async def bilei_add(self, event: AstrMessageEvent,name: str, text: str): - """避雷添加 名称 备注""" - return await self.plain_msg(event, lambda: self.bilie.add(name,text,event.get_sender_name())) - - - async def bilei_all(self, event: AstrMessageEvent): - """避雷查看""" - return await self.T2I_image_msg(event, self.bilie.all) - - - async def bilei_select(self, event: AstrMessageEvent, name:str): - """避雷查询""" - return await self.T2I_image_msg(event, lambda: self.bilie.select(name)) - - - async def bilei_update(self, event: AstrMessageEvent, id:int, name: str, text: str): - """避雷修改 ID 名称 备注""" - return await self.plain_msg(event, lambda: self.bilie.update(id,name,text,event.get_sender_name())) - - - async def bilei_delete(self, event: AstrMessageEvent, id:int): - """避雷删除 ID""" - return await self.plain_msg(event, lambda: self.bilie.delete(id)) - - - async def jx3_kaifhujiank(self, event: AstrMessageEvent): - """剑三 开服监控""" - return_msg = await self.jx3at.get_task_info("kfjk") - yield event.plain_result(return_msg) - - - async def jx3_xinwenzhixun(self, event: AstrMessageEvent): - """剑三 新闻推送""" - return_msg = await self.jx3at.get_task_info("xwzx") - yield event.plain_result(return_msg) - - - async def jx3_shuamamsg(self, event: AstrMessageEvent): - """剑三 刷马推送""" - return_msg = await self.jx3at.get_task_info("smxx") - yield event.plain_result(return_msg) - - - async def jx3_chitusg(self, event: AstrMessageEvent): - """剑三 赤兔推送""" - return_msg = await self.jx3at.get_task_info("ctxx") - yield event.plain_result(return_msg) \ No newline at end of file diff --git a/core/jx3_data.py b/core/jx3_data.py index c9e090c..e66c264 100644 --- a/core/jx3_data.py +++ b/core/jx3_data.py @@ -1372,7 +1372,7 @@ class JX3Service: return_data["temp"] = data["post_content"] msg = "" for m in data["post_meta"]["data"]: - msg += f"【宏名称】{m['name']}\n" + msg += f"【宏名称】\n{m['name']}\n" msg += f"【使用说明】\n{m['desc']}\n" msg += f"【宏脚本】\n{m['macro']}\n\n" diff --git a/main.py b/main.py index 78d1fed..cd7d988 100644 --- a/main.py +++ b/main.py @@ -12,13 +12,15 @@ from astrbot.api.event import filter, AstrMessageEvent, MessageEventResult, Mess from astrbot.api.star import Context, Star, register, StarTools from astrbot.api import logger from astrbot.api import AstrBotConfig -import astrbot.api.message_components as Comp +from astrbot.core.utils.session_waiter import ( + SessionController, + session_waiter, +) from .core.sqlite import AsyncSQLiteDB from .core.jx3_data import JX3Service from .core.async_task import AsyncTask from .core.bilei_data import BiLeidata -from .core.jx3_commands import JX3Commands @register("astrbot_plugin_jx3", "fxdyz", @@ -58,13 +60,14 @@ class Jx3ApiPlugin(Star): logger.info(f"已启用指令前缀功能,前缀为:{self.prefix_text}") else: logger.info(f"未启用指令前缀功能。") + # 默认服务器 self.server = self.conf.get("server", "梦江南") - # 声明指令集 - self.command_map = {} logger.info(f"配置加载默认服务器:{self.server}") - logger.info(f"指令集初始完成。") + # 声明指令集 + self.command_map = {} + logger.info("jx3api插件初始化完成") @@ -97,15 +100,17 @@ class Jx3ApiPlugin(Star): user TEXT ) """) + # 避雷功能 实例化 self.bilei = BiLeidata(self.sql_db) + # 剑三功能 实例化 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.bilei, self.server) + except Exception as e: if hasattr(self, "at"): await self.at.destroy() @@ -159,13 +164,6 @@ class Jx3ApiPlugin(Star): logger.info(f"本地数据库文件 {target_file_path} 已存在,跳过复制。") return target_file_path - - def serverdefault(self,server): - """加载配置默认服务器""" - if server == "": - return self.server - return server - def parse_message(self, text: str) -> list[str] | None: """消息解析""" @@ -253,52 +251,379 @@ class Jx3ApiPlugin(Star): def ini_command_map(self): """初始化指令集""" self.command_map = { - "功能": 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_xinwen, - "科举": self.jx3com.jx3_keju, - "花价": self.jx3com.jx3_huajia, - "装饰": self.jx3com.jx3_zhuangshi, - "器物": self.jx3com.jx3_qiwu, - "沙盘": self.jx3com.jx3_shapan, - "奇遇统计": self.jx3com.jx3_qufuqiyu, - "奇遇攻略": self.jx3com.jx3_qiyugonglue, - "宏": self.jx3com.jx3_hong, - "配装": self.jx3com.jx3_peizhuang, - "金价": 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.bilei_add, - "避雷查看": self.jx3com.bilei_all, - "避雷查询": self.jx3com.bilei_select, - "避雷修改": self.jx3com.bilei_update, - "避雷删除": self.jx3com.bilei_delete, - "开服监控": self.jx3com.jx3_kaifhujiank, - "新闻推送": self.jx3com.jx3_xinwenzhixun, - "刷马推送": self.jx3com.jx3_shuamamsg, - "赤兔推送": self.jx3com.jx3_chitusg, + "功能": 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_xinwen, + "科举": self.jx3_keju, + "花价": self.jx3_huajia, + "装饰": self.jx3_zhuangshi, + "器物": self.jx3_qiwu, + "沙盘": self.jx3_shapan, + "奇遇统计": self.jx3_qufuqiyu, + "奇遇攻略": self.jx3_qiyugonglue, + "宏": self.jx3_hong, + "配装": self.jx3_peizhuang, + "金价": self.jx3_jinjia, + "物价": self.jx3_wujia, + "交易行": 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.bilei_add, + "避雷查看": self.bilei_all, + "避雷查询": self.bilei_select, + "避雷修改": self.bilei_update, + "避雷删除": self.bilei_delete, + "开服监控": self.jx3_kaifhujiank, + "新闻推送": self.jx3_xinwenzhixun, + "刷马推送": self.jx3_shuamamsg, + "赤兔推送": self.jx3_chitusg, } + def serverdefault(self,server): + """加载配置默认服务器""" + if server == "": + return self.server + return server + + + async def plain_msg(self, event: AstrMessageEvent, action): + """最终将数据整理成文本发送""" + data= await action() + try: + if data["code"] == 200: + await event.send( event.plain_result(data["data"])) + else: + await event.send(event.plain_result(data["msg"])) + except Exception as e: + logger.error(f"功能函数执行错误: {e}") + await event.send(event.plain_result("猪脑过载,请稍后再试")) + + + async def T2I_image_msg(self, event: AstrMessageEvent, action): + """最终将数据渲染成图片发送""" + data = await action() + try: + if data["code"] == 200: + url = await self.html_render(data["temp"], data["data"], options={}) + await event.send(event.image_result(url)) + else: + await event.send(event.plain_result(data["msg"])) + + except Exception as e: + logger.error(f"功能函数执行错误: {e}") + await event.send(event.plain_result("猪脑过载,请稍后再试")) + + + async def image_msg(self, event: AstrMessageEvent, action): + """最终将数据整理成图片发送""" + data = await action() + try: + if data["code"] == 200: + await event.send(event.image_result(data["data"])) + else: + await event.send(event.plain_result(data["msg"])) + + except Exception as e: + logger.error(f"功能函数执行错误: {e}") + await event.send(event.plain_result("猪脑过载,请稍后再试")) + async def jx3_helps(self, event: AstrMessageEvent): + """剑三 功能""" + return await self.T2I_image_msg(event, self.jx3fun.helps) + + + async def jx3_richang(self, event: AstrMessageEvent,server: str = "" ,num: int = 0): + """剑三 日常 服务器 天数""" + return await self.plain_msg(event, lambda: self.jx3fun.richang(self.serverdefault(server),num)) + + + async def jx3_richangyuche(self, event: AstrMessageEvent): + """剑三 日常预测""" + return await self.T2I_image_msg(event, self.jx3fun.richangyuche) + + + async def jx3_xingxiashijian(self, event: AstrMessageEvent,name: str = "穹野卫"): + """剑三 名望""" + return await self.T2I_image_msg(event, lambda: self.jx3fun.xingxiashijian(name)) + + + async def jx3_kaifu(self, event: AstrMessageEvent,server: str = ""): + """剑三 开服 服务器""" + return await self.plain_msg(event, lambda: self.jx3fun.kaifu(self.serverdefault(server))) + + + async def jx3_zhuangtai(self, event: AstrMessageEvent): + """剑三 状态""" + return await self.T2I_image_msg(event, self.jx3fun.zhuangtai) + + + async def jx3_shaohua(self, event: AstrMessageEvent,): + """剑三 骚话""" + return await self.plain_msg(event, self.jx3fun.shaohua) + + + async def jx3_jigai(self, event: AstrMessageEvent,): + """剑三 技改""" + return await self.plain_msg(event, self.jx3fun.jigai) + + + async def jx3_xinwen(self, event: AstrMessageEvent,num:int = 5): + """剑三 新闻""" + return await self.plain_msg(event, lambda: self.jx3fun.xinwen(num)) + + + async def jx3_keju(self, event: AstrMessageEvent,subject: str, limit: int = 5): + """剑三 科举""" + return await self.plain_msg(event, lambda: self.jx3fun.keju(subject,limit)) + + + async def jx3_huajia(self, event: AstrMessageEvent, name: str= "", server: str = "", map: str= ""): + """剑三 花价 名称 服务器 地图""" + return await self.T2I_image_msg(event, lambda: self.jx3fun.huajia(self.serverdefault(server),name,map)) + + + async def jx3_zhuangshi(self, event: AstrMessageEvent, name: str): + """剑三 装饰 名称""" + return await self.T2I_image_msg(event, lambda: self.jx3fun.zhuangshi(name)) + + + async def jx3_qiwu(self, event: AstrMessageEvent, name: str): + """剑三 器物 地图名称""" + return await self.T2I_image_msg(event, lambda: self.jx3fun.qiwu(name)) + + + async def jx3_shapan(self, event: AstrMessageEvent,server: str = ""): + """剑三 沙盘 服务器""" + return await self.image_msg(event, lambda: self.jx3fun.shapan(self.serverdefault(server))) + + + async def jx3_qufuqiyu(self, event: AstrMessageEvent,adventureName: str = "阴阳两界", server: str = ""): + """剑三 奇遇统计 奇遇名称 服务器""" + return await self.T2I_image_msg(event, lambda: self.jx3fun.qiyu(adventureName,self.serverdefault(server))) + + + async def jx3_qiyugonglue(self, event: AstrMessageEvent,name: str): + """剑三 奇遇攻略 奇遇名称""" + return await self.T2I_image_msg(event, lambda: self.jx3fun.qiyugonglue(name)) + + + async def jx3_hong(self, event: AstrMessageEvent, kungfu: str = "易筋经"): + """剑三 宏 心法""" + # 获取宏列表 + try: + data = await self.jx3fun.hong1(kungfu) + if data["code"] == 200: + await event.send(event.plain_result(data["msg"])) + # 获取用户ID + user_id = event.get_sender_id() + # 等等用户回复 + @session_waiter(timeout=30) + async def macro_select_waiter(controller: SessionController,new_event: AstrMessageEvent): + if new_event.get_sender_id() != user_id: + return + + msg = new_event.get_message_str().strip() + + if not msg.isdigit(): + await new_event.send( + MessageChain().message("输入异常,结束会话") + ) + controller.stop() + return + + num = int(msg) + if num < 1 or num > data["data"]["num"]: + await new_event.send( + MessageChain().message("无效序号,结束会话") + ) + controller.stop() + return + + try: + data1 = await self.jx3fun.hong2(data["data"]["pid"][num]) + if data1["code"] != 200: + await new_event.send( + MessageChain().message("获取详细宏数据失败") + ) + controller.stop() + return + + chain = MessageChain() + if data1["temp"] != "": + url = await self.html_render(data1["temp"], {}, options={}) + chain.url_image(url) + + msg_text = data1["data"] + chain.message(msg_text) + await new_event.send(chain) + + except Exception as e: + logger.error(f"功能函数执行错误: {e}") + await new_event.send( + MessageChain().message("猪脑过载,请稍后再试") + ) + + controller.stop() + + try: + await macro_select_waiter(event) + except TimeoutError: + await event.send(event.plain_result("选择宏超时,已结束会话")) + except Exception: + logger.error("宏选择发生异常", exc_info=True) + else: + await event.send(event.plain_result(f"未搜索到与【{kungfu}】相关的宏")) + return + except Exception as e: + logger.error(f"功能函数执行错误: {e}") + await event.send(event.plain_result("猪脑过载,请稍后再试")) + + + async def jx3_peizhuang(self, event: AstrMessageEvent,name: str = "易筋经", tags: str = ""): + """剑三 配装 心法""" + return await self.plain_msg(event, lambda: self.jx3fun.peizhuang( name,tags)) + + + async def jx3_jinjia(self, event: AstrMessageEvent,server: str = "", limit:str = "15"): + """剑三 金价 服务器""" + return await self.T2I_image_msg(event, lambda: self.jx3fun.jinjia( self.serverdefault(server),limit)) + + + async def jx3_wujia(self, event: AstrMessageEvent,Name: str = "秃盒", server: str = ""): + """剑三 物价 外观名称""" + return await self.T2I_image_msg(event, lambda: self.jx3fun.wujia(Name, self.serverdefault(server))) + + + async def jx3_jiaoyihang(self, event: AstrMessageEvent,Name: str = "守缺式",server: str = ""): + """剑三 交易行 物品名称 服务器""" + return await self.T2I_image_msg(event, lambda: self.jx3fun.jiaoyihang(Name, self.serverdefault(server))) + + + async def jx3_jueshemingpian(self, event: AstrMessageEvent, name: str = "飞翔大野猪", server: str = ""): + """剑三 名片 角色 服务器""" + return await self.image_msg(event, lambda: self.jx3fun.jueshemingpian( self.serverdefault(server),name)) + + + async def jx3_shuijimingpian(self, event: AstrMessageEvent,force: str = "万花", body: str = "萝莉", server: str = ""): + """剑三 随机名片 职业 体型 服务器""" + return await self.image_msg(event, lambda: self.jx3fun.shuijimingpian(force,body, self.serverdefault(server))) + + + async def jx3_yanhuachaxun(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = ""): + """剑三 烟花 角色 服务器""" + return await self.T2I_image_msg(event, lambda: self.jx3fun.yanhuachaxun( self.serverdefault(server),name)) + + + async def jx3_dilujilu(self, event: AstrMessageEvent,server: str = ""): + """剑三 的卢 服务器""" + return await self.T2I_image_msg(event, lambda: self.jx3fun.dilujilu( self.serverdefault(server))) + + + async def jx3_tuanduizhaomu(self, event: AstrMessageEvent,keyword: str = "25人普通会战弓月城", server: str = ""): + """剑三 招募 副本 服务器""" + return await self.T2I_image_msg(event, lambda: self.jx3fun.tuanduizhaomu( self.serverdefault(server),keyword)) + + + async def jx3_zhanji(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = "", mode:str = "33"): + """剑三 战绩 角色 服务器 类型""" + return await self.T2I_image_msg(event, lambda: self.jx3fun.zhanji(name, self.serverdefault(server),mode)) + + + async def jx3_qiyu(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = ""): + """剑三 奇遇 角色名称 服务器""" + return await self.T2I_image_msg(event, lambda: self.jx3fun.juesheqiyu(name, self.serverdefault(server))) + + + async def jx3_zhengyingpaimai(self, event: AstrMessageEvent,name: str = "玄晶", server: str = ""): + """剑三 阵营拍卖 物品名称 服务器""" + return await self.T2I_image_msg(event, lambda: self.jx3fun.zhengyingpaimai( self.serverdefault(server), name)) + + + async def jx3_fuyaojjiutian(self, event: AstrMessageEvent,server: str = ""): + """剑三 扶摇九天 服务器""" + return await self.plain_msg(event, lambda: self.jx3fun.fuyaojjiutian( self.serverdefault(server))) + + + async def jx3_shuma(self, event: AstrMessageEvent,server: str = ""): + """剑三 刷马 服务器""" + return await self.plain_msg(event, lambda: self.jx3fun.shuma( self.serverdefault(server))) + + + async def jx3_pianzhi(self, event: AstrMessageEvent,qq: str): + """剑三 骗子 QQ""" + return await self.plain_msg(event, lambda: self.jx3fun.pianzhi(qq)) + + + async def jx3_bagua(self, event: AstrMessageEvent,name: str,text: str): + """剑三 八卦 类型""" + return await self.plain_msg(event, lambda: self.jx3fun.bagua(name)) + + + async def bilei_add(self, event: AstrMessageEvent,name: str, text: str): + """避雷添加 名称 备注""" + return await self.plain_msg(event, lambda: self.bilei.add(name,text,event.get_sender_name())) + + + async def bilei_all(self, event: AstrMessageEvent): + """避雷查看""" + return await self.T2I_image_msg(event, self.bilei.all) + + + async def bilei_select(self, event: AstrMessageEvent, name:str): + """避雷查询""" + return await self.T2I_image_msg(event, lambda: self.bilei.select(name)) + + + async def bilei_update(self, event: AstrMessageEvent, id:int, name: str, text: str): + """避雷修改 ID 名称 备注""" + return await self.plain_msg(event, lambda: self.bilei.update(id,name,text,event.get_sender_name())) + + + async def bilei_delete(self, event: AstrMessageEvent, id:int): + """避雷删除 ID""" + return await self.plain_msg(event, lambda: self.bilei.delete(id)) + + + 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) +