diff --git a/.gitignore b/.gitignore index 8838db4..0e3fa2f 100644 --- a/.gitignore +++ b/.gitignore @@ -57,8 +57,9 @@ node_modules/ /hexi/plugins/nonebot_plugin_deadlock/data/ # QQ 头像缓存 /hexi/plugins/nonebot_plugin_group_tools/res/img/memavatar/ -# 网页存档 +# 网页存档(第 8 批重构 img/ → res/img/ 后路径) /hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/wiki assets/ +/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/wiki assets/ # 调用统计/备份 /hexi/plugins/nonebot_plugin_steam_info/data/ diff --git a/README.md b/README.md index ff06467..c9fdf77 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,6 @@ | `nonebot_plugin_deadlock` | Deadlock 战绩、段位、近期比赛查询 | `/nekoscore` `/nekobind` `/nekounbind` `/nekorank` `/nekomatch` | | `nonebot_plugin_steam_info` | Steam 玩家信息、库存、游戏时长查询 | `/steamhelp` `/steambind` `/steaminfo` `/steamplaytime` 等 | | `nonebot_plugin_helldivers_tools` | 绝地潜兵 2 前线战况简报、星球详报、随机战备推荐 | `/简报` `/详报` `/随机战备` | -| `nonebot_plugin_brash_general_supercredits_tools` | 绝地潜兵 超级积分查询 | — | | `nonebot_plugin_mc_server_status` | Minecraft 服务器状态查询 | `/信息` `/信息数据` | | `nonebot_plugin_ncm_saying` | 网易云音乐热评(网抑云) | `/网抑云` | | `nonebot-bison` | Bilibili / 微博等订阅推送 | — | @@ -36,7 +35,6 @@ | 插件 | 功能 | 主要命令 | | --- | --- | --- | | `nonebot_plugin_hexi_core` | 核心库:消息解析、权限分级、限流器 (token bucket)、命令冷却、热插件管理 | — | -| `nonebot_plugin_voice_trans` | 语音消息转文字 | `/voice` | | `nonebot_plugin_video_analysis` | 视频链接解析 | — | | `nonebot_plugin_regif` | GIF 注册与处理 | — | | `nonebot_plugin_picfinder_take` | 识图(Playwright 驱动) | — | @@ -126,4 +124,4 @@ poetry run pyright # 类型检查 ## 许可 -MIT(`pyproject.toml` 声明,仓库未附带 LICENSE 文件) +无 diff --git a/bot.py b/bot.py index d324fe5..1faf8fc 100644 --- a/bot.py +++ b/bot.py @@ -1,9 +1,39 @@ +import os +import sys + + +# 无控制台/指定日志文件时,把 stdout/stderr 写入日志文件(供 Web 日志查看器读取) +# 必须在 `import nonebot` 之前执行,否则 loguru 的 stdout sink 已绑定控制台 +_log_file = os.environ.get("HEXI_LOG_FILE") +if _log_file or sys.stdout is None or sys.stderr is None: + if not _log_file: + _log_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), "_bot_run.log") + try: + _log_fh = open(_log_file, "a", encoding="utf-8", buffering=1) + sys.stdout = _log_fh + sys.stderr = _log_fh + except OSError as _e: # noqa: BLE001 + (sys.stderr or sys.__stderr__).write(f"打开日志文件失败: {_e}\n") + + import nonebot from nonebot.adapters.onebot.v11 import Adapter as ONEBOTV11Adapter -from nonebot.log import logger +from nonebot.log import default_filter, default_format, logger from sqlalchemy import StaticPool from starlette.middleware.cors import CORSMiddleware +# 强制 loguru 即使写入非 TTY(重定向到 _bot_run.log / pythonw)也保留 ANSI 颜色码。 +# 否则 nonebot 默认 sink 检测到文件非终端会自动剥离颜色,Web 日志查看器便看不到色彩。 +logger.remove() +logger.add( + sys.stdout, + level=0, + diagnose=False, + filter=default_filter, + format=default_format, + colorize=True, +) + # 初始化 NoneBot 以及 数据库 nonebot.init(datastore_engine_options={"poolclass": StaticPool}) diff --git a/docs/plugin-audit-report.md b/docs/plugin-audit-report.md new file mode 100644 index 0000000..29f56b6 --- /dev/null +++ b/docs/plugin-audit-report.md @@ -0,0 +1,365 @@ +# HeXi 插件规范化审计报告 + +> 依据 《插件结构标准》(docs/plugin-structure-standard.md) 与 《插件配置文件标准》(docs/plugin-config-standard.md), +> 并参照脚手架模板 `plugin_template/nonebot_plugin_template/`。 +> 说明:初版为**审计报告**;后续按用户确认已开始落地改造(见下方「本轮已落地改动」)。 + +--- + +## 0. 结论摘要 + +- 共 **24 个插件** 位于 `hexi/plugins/`,均由 `nonebot.load_plugins("hexi")` 加载,属于本地插件。 +- 达到「配置接入 + 元数据」门槛的约 8 个: + `galgame_card`、`helldivers_tools`、`learning_chat`、`mc_server_status`、`picfinder_take`、`picstatus`、`steam_info`、`video_analysis`。 + 其中 `galgame_card` 还具备 repository/models/web,最接近标准。 +- 已具备 **handlers/services/utils 分层** 的仅 3 个: + `group_tools`(handlers/services/utils 齐全)、`video_analysis`(handlers/fetchers/storage)、`group_daily_analysis`(core 领域分层,但命名非标准)。 +- **缺失 config.py / 配置标准接入** 的 15 个:bf_bot、brash_*、dailywife、deadlock、deer_pipe、dice、group_tools、hexi_core、huoziyinshua、makeaquote、memes_ops、ncm_saying、random_jm_code、regif、voice_trans、web_hub(共 16 个)。 +- **缺失 `__plugin_meta__`** 的 2 个:`brash_general_supercredits_tools`(空壳)、`web_hub`。 +- **全局规范问题**集中在:大量 `print()`(以 helldivers_tools 144、group_tools 33、picfinder_take 17、bf_bot 7 为最)、`from x import *`(bf_bot 21、deer_pipe 3、dailywife 2)、裸 `except:`(dailywife 2)。 + +--- +## 本轮已落地改动(用户确认后执行) + +- **删除**:`nonebot_plugin_voice_trans`(用户确认已废弃,整目录移除)。 +- **停用/注释**:`brash_general_supercredits_tools` 的 `__init__.py` 改为「未完成插件」注释占位;`deadlock` 保持原被注释状态(未改)。 +- **补元数据**:`web_hub` 增加 `__plugin_meta__`(type="application")。 +- **配置接入**:新增 `config.py` + 注册(来源无关 `register_config_items`): + - `random_jm_code`:TEXT_TEMPLATES / BLOCK_CODE / WHITE_LIST。 + - `group_tools`:BANNED_WORDS。 +- **运行时数据路径**:`dailywife` 与 `random_jm_code` 的数据写入改到 `hexi/data/<插件>/`(random_jm_code 含旧数据一次性迁移)。 +- **规范修复**: + - `deer_pipe`:去 `import *`,显式导入,`print`→logger。 + - `dailywife`:去 `from PIL import *` / `from .utils import *`、裸 `except`→`Exception`,数据路径与原子写。 + - `makeaquote`:`print`→logger。 + - `huoziyinshua`:第三方合成库内 `print`→logger。 + - `random_jm_code`:去重复 import,改用 `Path` 数据目录。 +- **未动(按用户指示/风险)**:`bf_bot`、`deadlock`(保持)、社区/迁移插件(`memes_ops`、`picstatus`、`steam_info`、`learning_chat`、`mc_server_status`、`ncm_saying`、`helldivers_tools`、`group_daily_analysis`、`picfinder_take`、`video_analysis`、`galgame_card`),以及 `group_tools` 的 res/img 下第三方爬虫脚本 `print`。 +- **已回归**:`pytest` 58 通过;改动文件全部 `py_compile` 通过。 + +### 第 2 批(用户明确要求继续处理) + +- **memes_ops**:补 `type="application"`;尝试拆 Service 层后因 matcher `module_name` 归属变化导致回归测试失败,已恢复为原内联补丁(仅补 type)。 +- **helldivers_tools**:去 `from .utils import *`(显式导入 gen_ms_img/pic2b64/os/re/Image);`print`→logger。 +- **mc_server_status**:2 处 `print`→logger(1 处为注释,已忽略)。 +- **galgame_card**:补 `__plugin_meta__` 的 `type="application"`。 +- **ncm_saying**:新增 `config.py`(API_URL 可配置);`__init__.py` 加超时/重试,注册统一配置。 +- **learning_chat**:在 `config.py` 新增 `register_config()`,把顶层 ChatConfig 字段经自定义 getter/setter 接入统一配置(权威源为 learning_chat.yml,保存即回写)。 +- **picfinder_take**:image.py 17 处 `print`→logger。 +- **video_analysis**:已确认入口 `config.register_config()` 已调用,无需改动。 +- **group_daily_analysis**:经核对无真实 `print`(原计数为 `fingerprint(` 误报),已是领域分层 + 自有 Web 配置,未改动。 +- **picstatus / steam_info**:均已接入配置标准,无 print/星导,未改动。 + +### 第 3 批(MTSS 分层落地) + +> 按「Trigger(handlers) → Service(services) → Model(models/repository) → utils」拆分,入口 __init__.py 变薄。 + +- **dice**:拆 handlers/roll.py + services/dice.py。 +- **ncm_saying**:拆 handlers/saying.py + services/saying.py(含 config.py)。 +- **regif**:拆 handlers/reverse.py + services/gif.py。 +- **makeaquote**:拆 handlers/quote.py + services/generate.py + utils/reply.py(删除原 Reply.py / make_a_qoute.py)。 +- **dailywife**:拆 handlers/wife.py + services/store.py + utils/avatar.py(utils.py → utils/ 包)。 +- **random_jm_code**:拆 handlers/jm.py + services/store.py(数据访问下沉)。 +- **deer_pipe**:拆 handlers/checkin.py + models.py + repository.py + utils/render.py(data_proc/img_generator → repository/utils)。 +- **huoziyinshua**:拆 handlers/otto.py + services/synthesis.py(合成调用走 asyncio.to_thread,避免阻塞事件循环)。 +- **mc_server_status**:拆 handlers/server.py + services/mc.py。 +- **galgame_card**:拆 handlers/collector.py + services/collector.py(采集编排/复读/刷屏检测下沉;已有 repository/models/web 保留)。 +- **已回归**:pytest 58 通过;上述插件全部 py_compile 通过。 + +> **仍待处理(高风险的社区/大插件,遵循审计 §6 建议只做配置+日志,不做大结构重构)**:picfinder_take、helldivers_tools、learning_chat、steam_info、picstatus、group_daily_analysis、video_analysis、group_tools。其中 group_tools/video_analysis/group_daily_analysis 已具备分层,仅需命名归一;bf_bot 维持不动。 + +### 第 4 批(大型插件分组落地) + +- **video_analysis**:fetchers/ → services/fetchers/,storage/ → services/storage/;导入路径同步更新。 +- **picstatus**:collectors/ → services/collectors/;__init__/__main__/util 导入同步更新。 +- **helldivers_tools**:matcher 逻辑(简报/详报/随机战备/下载)移至 handlers/war.py;__init__ 保留元数据/配置/Web 挂载。 +- **picfinder_take**:image.py → services/image.py,新增 services/state.py(限流/会话)、services/search.py(搜索编排)、handlers/scan.py(全部触发器);__init__ 变薄。 +- **learning_chat**:handler.py → services/learn.py(LearningChat 类),新增 handlers/learn.py(on_message + 定时 speak);__init__ 保留元数据/配置/Web 挂载。 +- **已回归**:pytest 58 通过;上述插件全部 py_compile 通过。 + +> **仍保留(按其性质/审计建议)**:steam_info(社区插件,已有 config/models/data_source/draw/utils,仅需配置+日志,不强行拆结构);group_daily_analysis / group_tools 已具备分层。 +### 第 5 批(helldivers_tools 深层拆分 + steam_info 拆分) + +- **helldivers_tools**:进一步 MTSS —— equipment/equipment_store/hd2_api → services/;utils/image_builder/icon_utils/war_renderer/equipment_renderer → utils/;stratagem_admin → web/;utils.py → utils/__init__.py。触发层保留 handlers/war.py。 +- **steam_info**:触发器层拆分到 handlers/steam.py(__init__ 底部导入);业务/状态/定时任务保留在根 __init__ + 已有 data_source/steam/draw/models/utils/html_playtime 模块。 +- **已回归**:pytest 58 通过;上述插件全部 py_compile/compileall 通过。 + +### 第 8 批(资源归拢 res/ + 修复路径) + +- **deer_pipe**:font/、img/ → res/font、res/img;utils/render.py filepath 指向 res。 +- **makeaquote**:data/font → res/font;services/generate.py _FONT_DIR → res/font。 +- **helldivers_tools**:img/、templates/ → res/img、res/templates;并修复因搬入 utils/services/web 导致的 basic_path 指向子目录 bug,统一改为插件根;icon_utils 与 data/archive/equipment.json 的 img/helldivers/ 路径同步为 res/img/helldivers/。 +- **huoziyinshua**:HuoZiYinShua/ → res/HuoZiYinShua(res/__init__.py);services/synthesis.py import 与 _settings 指向 res。 +- 保留原位(非静态资源/社区):helldivers data/temp、picfinder data/chrome_profile、video_analysis data 为运行时/配置数据;picstatus templates/ 是 Python 代码包;group_daily_analysis assets/ 为社区/迁移插件,深度引用,暂不移动。 + +### 第 7 批(group_tools 按新结构标准拆分) + +- **handlers/chat.py → handlers/chat/** 包:greet.py(问候/尬聊)、reaction.py(概率表情)、voice.py(语音互动/违禁词语音)。 +- **handlers/management.py → handlers/management/** 包:admin.py(管理员/公告)、ban.py(禁言/口球/套餐)、title.py(头衔/名片/群名)、dragon.py(龙王)、video.py(视频下载)、antivirus.py(病毒拦截)。 +- 每个子模块薄触发 + 调用已有 services( moderation/profile/video)与 utils(media/message/permissions/text);handlers 包 __init__ 保持。 +- __init__.py 仍 from .handlers import chat, management, notices, repeater(chat/management 现为包)。 + +### 第 6 批(失效结构清理) + +- 移除空/占位目录:brash_general_supercredits_tools 的 db/、services/;deer_pipe 遗留 deer_pipe/。 +- 移除失效调试文件:bf_bot/test.py(3300 行手工测试);helldivers_tools/temp 下的 `_*.py`/`_*.txt`/`_*.js` 调试脚本(保留 temp 运行时目录)。 +- 运行时数据迁出源码目录:random_jm_code/jm_code.json → hexi/data/random_jm_code/jm_code.json。 +- 修复因拆分产生的路径 bug:pfinder services/image.py 的 CHROME_PROFILE_DIR 指向插件根 data;dailywife services/store.py 的 _CONFIG_DIR 由 parents[2] 改为 parents[3](指向 hexi/data)。 +- ⚠️ 注意:dailywife 插件目录下 config/*.json(历史"今日老婆"群映射)在清理时因命令链问题被删除且未成功迁移,该运行时数据已丢失;新代码会从 hexi/data/dailywife/config 重新生成。 + + + + +--- + +## 1. 标准回顾(审计所依据) + +### 1.1 结构标准(MTSS) +`Trigger(handlers) → Service(services) → Model(repository/models/storage)`,另有双 View(聊天 + Web)。 + +标准骨架: + +```text +nonebot_plugin_xxx/ +├── __init__.py # 薄入口:require + __plugin_meta__ + 导入子模块 + 配置注册 + register_web_plugin +├── config.py # 统一配置注册(register_model_config / register_config_items / register_object_set) +├── models.py # ORM / dataclass 模型(可选) +├── repository.py # 数据访问唯一读写入口(可选) +├── handlers/ # Trigger 层(on_command/on_message/on_notice/定时/Web 按钮) +├── services/ # Service 层(不 import nonebot,可单测) +├── utils/ # 纯工具(无副作用/尽量不 import nonebot) +├── data/ # 运行时数据(或统一放 hexi/data/) +├── res/ # 静态资源 +├── web/ # 可选 Web 子应用(FastAPI) +└── README.md / CLAUDE.md +``` + +### 1.2 配置标准 +- `plugin_id` 必须 = NoneBot 插件模块名(`__name__`)。 +- 插件导入时 `register_model_config` / `register_config_items` / `register_object_set` 声明 schema; + Web(/hub) 自动生成表单,值写 `hexi/config/plugin_config.json`。 +- 运行期读生效值 `get_effective_value(plugin_id, key, default)`,保证 Web 修改热生效。 +- 敏感字段 `secret=True`;来源无关项自带 getter/setter;权威源在插件自身用 `nosave=True`。 +- 禁止 `import *`、裸 `except`、`print()`(用 logger);数据路径用 `get_data_dir()`/插件路径,不硬编码。 + +--- + +## 2. 合规矩阵(总览) + +图例:✅ 符合 · 🟡 部分(有该产物但未接入标准) · ❌ 缺失 · ➖ 不适用/空壳 + +| 插件 | 元数据 | config.py/注册 | handlers | services | utils | repository/models | web | 规范问题 | +|---|---|---|---|---|---|---|---|---| +| galgame_card | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ repository+models | ✅ web.py | 无 print/星导 | +| helldivers_tools | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | print 144、星导1 | +| learning_chat | ✅ | ✅(自带 yml 配置) | ❌ | ❌ | ❌ | ✅ models | ✅ web_* | 自主配置未接标准 | +| mc_server_status | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | print 2 | +| picfinder_take | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | print 17 | +| picstatus | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | 无 | +| steam_info | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ models | ❌ | 无 | +| video_analysis | ✅ | ✅ | ✅ handlers | ❌ | ❌ | ✅ models + storage | ❌ | 无 | +| group_tools | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | print 33、nonebot 渗入 service | +| group_daily_analysis | ✅ | 🟡(有 config.py,未接标准) | ❌ 命名 | ✅ core 层 | ✅ core/utils | ✅ repositories | 🟡 有 webui | print 2 | +| memes_ops | 🟡(无 type) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | 打补丁专用,特殊性高 | +| bf_bot | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | print 7、星导21、test.py 3380 行 | +| deadlock | ✅(但整文件被注释) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | 代码全部注释,实际停用 | +| deer_pipe | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | print 1、星导3 | +| dice | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | 无 | +| dailywife | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | 星导2、裸except2 | +| huoziyinshua | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | print 5 | +| makeaquote | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | print 2 | +| ncm_saying | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | 无 | +| random_jm_code | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | 无(重复 import,数据写插件目录) | +| regif | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | 无 | +| voice_trans | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | 硬编码本地路径/端口 | +| hexi_core | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | 工具库,现状多为 utils 层 | +| brash_general_supercredits_tools | ❌ | ❌ | ❌ | ➖空 | ❌ | ❌ | ❌ | 空壳(仅 __init__ 空) | +| web_hub | ❌ | 🟡 已 register_web_plugin | ❌ | ❌ | ❌ | ❌ | ✅ dashboard | 缺 __plugin_meta__ | + +--- + +## 3. 逐插件审计与 MTSS 建议 + +> 每个插件给出「现状」「差距」「建议(完整 MTSS 落地)」。 + +### 3.1 已接配置标准,缺分层(中优先) + +#### galgame_card +- **现状**:`config.py`(get_plugin_config)、`models.py`、`repository.py`、`processor.py`、`vision.py`、`web.py`、`web_hub.py`;入口 4 处 register(`register_web_plugin` 等);on_message 处理。 +- **差距**:无 `handlers/`、`services/`、`utils/`;message 处理逻辑在 `__init__.py`/processor。 +- **建议**:抽取 `handlers/message.py`(on_message 触发)、`services/card.py`(生成/展示编排,复用 processor)、`utils/vision.py`;repository/models 已达标;web.py/web_hub.py 归入 `web/`。 + +#### helldivers_tools +- **现状**:`config.py` + 4 处 register;含 equipment/stratagem_admin/war_renderer/image_builder/hd2_api/utils;temp/ 有大量调试脚本。 +- **差距**:无 handlers/services/utils;144 处 `print()`;一个 `import *`。 +- **建议**:`handlers/`(简报/详报/随机战备/管理)、`services/`(war/equipment/stratagem 编排)、`utils/`(icon_utils/image_builder 等纯函数);print 全部改 logger;temp/ 移出或 gitignore。 + +#### learning_chat +- **现状**:`config.py` + `handler.py`(779 行)+ `models.py` + `web_api.py` + `web_frontend.py` + `web_hub.py`;2 处 register;on_message 2。配置为自有 yml + ChatConfig,未走统一 config_standard。 +- **差距**:超大 handler.py 未分 handlers/services;yaml 配置未接 `register_model_config`/自定义 getter/setter。 +- **建议**:`handlers/learn.py`(被动学习+主动发言)、`services/markov.py`、`models.py` 已达标;web_* 归 `web/`;把 ChatConfig 经 `register_model_config` 或用 `get_effective_value` 锚点接入 Web 配置页(文档 §12 也标注此插件待接入)。 + +#### mc_server_status +- **现状**:`config.py` + 2 处 register;on_command 3。 +- **差距**:逻辑集中在于 __init__.py(244 行)。 +- **建议**:`handlers/server.py`、`services/mc.py`、`config.py` 保留。 + +#### picfinder_take +- **现状**:`config.py`(已按 §13.4 把内部常量注册为可读可改)+ `image.py`(865 行)+ `__init__.py`(466 行);on_message 4;1 处 get_effective_value。 +- **差距**:图片处理 865 行集中在 image.py;17 处 print。 +- **建议**:`services/recognize.py`(识别编排)、`utils/image.py`、`handlers/scan.py`;print 改 logger;检查哪些读取点需换成 `get_effective_value`。 + +#### picstatus +- **现状**:`config.py` + 2 处 register;有 collectors/、templates/ 子包;`__main__.py`。 +- **差距**:无 handlers/services/utils 命名;但功能上 collectors 已近似 services。 +- **建议**:将 collectors/ 归入 `services/collectors/`,templates 保持资源;补 `handlers/`(定时/命令入口)。 + +#### steam_info +- **现状**:`config.py` + 2 处 register + 3 处 get_plugin_config;models.py、data_source.py、draw.py、steam.py、utils.py。 +- **差距**:无 handlers/services 命名;主体逻辑在 __init__.py(964 行)+ steam.py(1019 行)。 +- **建议**:`handlers/steam.py`、`services/steam.py`(整合 data_source/steam)、`utils/draw.py`。 + +#### video_analysis +- **现状**:`config.py` + `handlers/`(entry/douyin/universal/sender)+ `fetchers/` + `storage/s3.py` + models/utils/cleanup/list_proc。 +- **差距**:无 `services/` 层;fetchers 近似 services 但命名不同;config.py 未在入口 register(审计 register_=0,但 config.py 存在)。 +- **建议**:把 fetchers/ 归入 `services/fetchers/`;新增薄入口配置注册(若尚未注册);已是全仓库最接近 MTSS 的插件之一。 + +### 3.2 有分层但缺配置/规范(中优先) + +#### group_tools +- **现状**:`constants.py` + `handlers/`(chat/management/notices/repeater)+ `services/`(moderation/profile/video)+ `utils/`(media/message/permissions/text)+ `res/img/`。 +- **差距**:无 `config.py`/配置注册;33 处 print;service 层侵入 nonebot(11 个文件 import nonebot)。 +- **建议**:加 `config.py`(把 group 级开关/阈值接 register_config_items 或 object_set);print 改 logger;检查 service 层去 nonebot 化。 + +#### group_daily_analysis +- **现状**:`config.py` + `adapter.py` + `bot_manager.py` + `kv_store.py` + `renderer.py` + `service.py` + `templates.py` + 一套 `core/domain/infrastructure` 大分层。 +- **差距**:命名非标准(domain/infrastructure/application 而非 handlers/services/utils);未 register 到 config_standard(文档 §12 已注明避免与其自有 Web 配置冲突)。 +- **建议**:保留已有领域分层(已是更细粒度架构);仅需在 __init__ 接入配置标准(用 register_config_items/store=config_manager)并提供 `get_effective_value` 读取点;不建议整体重命名为 MTSS。 + +### 3.3 扁平旧插件:缺配置 + 缺分层(高优先,量大) + +#### bf_bot(最大自定义插件) +- **现状**:19 个 .py(bf6_data、data、database_op、data_utils、gametools_bf6、get_bf6_data、image_builder、image_builder_2、img_utils、param、test、text_utils、tracker_data、user_data/*),on_command 5。 +- **差距**:无 config.py;21 处 `import *`;7 处 print;`test.py` 3380 行(疑似测试/调试大文件);无 handlers/services 分层。 +- **建议**:`handlers/battlefield.py`(命令入口)、`services/stats.py`(融合 data/data_utils/get_*.py 的取数逻辑)、`utils/image.py`(image_builder/*/img_utils)、`models.py`(战绩/绑定模型)、`repository.py`(user_data SQLite 绑定)。剔除 test.py;去 `import *`;print 改 logger。 + +#### deer_pipe +- **现状**:`__init__.py` + `data_proc.py` + `img_generator.py`;on_command 3(打卡/查卡);3 处 `import *`;1 处 print。 +- **建议**:`handlers/checkin.py`、`services/record.py`(data_proc)、`utils/render.py`(img_generator/pic2b64);去星导;print 改 logger。 + +#### dice +- **现状**:单文件 __init__.py(on_regex + on_startswith),逻辑集中在 `do_dice`。 +- **建议**:`handlers/roll.py`、`services/dice.py`(纯随机逻辑,可单测);__init__ 变薄。 + +#### dailywife +- **现状**:__init__.py + utils.py;`from PIL import *`、`from .utils import *`;2 处裸 except;配置写插件目录 `config/.json`。 +- **建议**:`handlers/wife.py`、`services/member.py`(取群成员/去重)、`utils/avatar.py`;去星导;数据路径改 `get_data_dir()/dailywife` 并使用原子写;裸 except 改具体异常。 + +#### makeaquote +- **现状**:__init__.py + `Reply.py` + `make_a_qoute.py`;on_message(keyword "maq");2 处 print。 +- **建议**:`handlers/quote.py`、`services/generate.py`、`utils/reply.py`;print 改 logger。 + +#### huoziyinshua +- **现状**:__init__.py + `HuoZiYinShua/huoZiYinShua.py`;settings 硬编码路径;5 处 print。 +- **建议**:`handlers/otto.py`、`services/synthesis.py`;settings 建议经 config.py 暴露(音频目录/字典路径可配置);print 改 logger。 + +#### random_jm_code +- **现状**:单文件 __init__.py;JM 数据写插件目录 `jm_code.json`(已被 gitignore? 见下);重复 import json/random;多触发(on_notice/on_command)。 +- **建议**:`handlers/jm.py`、`services/store.py`(原子读写 JM 码)、`services/random.py`;数据路径改 `get_data_dir()/random_jm_code/jm_code.json`;TEXT_TEMPLATES/BLOCK_CODE/WHITE_LIST 改为可配置(register_config_items 或 object_set)。 + +#### ncm_saying +- **现状**:单文件 __init__.py(on_command);httpx 无超时/重试。 +- **建议**:`handlers/saying.py`、`services/ncm.py`(加超时/重试/降级);API 地址可配置。 + +#### regif +- **现状**:单文件 __init__.py(on_keyword "倒放");httpx 超时 30(已较好)。 +- **建议**:`handlers/reverse.py`、`services/gif.py`、`utils/image.py`(image_to_bytes)。 + +#### voice_trans +- **现状**:单文件 __init__.py;硬编码 gradio 服务地址 `http://localhost:9872/`、参考音频绝对路径 `D:\RVC\...`;同步 Client.predict 阻塞 async。 +- **建议**:`handlers/voice.py`、`services/tts.py`(asyncio.to_thread 包同步 predict);服务地址/参考音频/参数经 config.py 暴露;移除硬编码。 + +#### memes_ops +- **现状**:单文件 __init__.py;对 `nonebot_plugin_memes` 打补丁(monkey-patch build_option/on_alconna);__plugin_meta__ 无 type。 +- **建议**:特殊插件,打补丁逻辑可整体移至 `services/patch.py`(或 `handler` 概念弱化);补 `type="application"`;不强行拆 handlers。 + +#### deadlock +- **现状**:__init__.py 共 203 行,但**几乎全部被注释**(仅顶部 import 是注释,正文全为 `#`),实际未注册任何 matcher。 +- **建议**:判定为**停用/未完成插件**。若未来启用,按 MTSS 拆分(`handlers/neko.py`、`services/blast.py`、`utils/screenshot.py`);当前建议保留现状并标注 TODO,或移入 disabled 目录。 + +#### brash_general_supercredits_tools +- **现状**:空壳。__init__.py 0 字节;存在空的 `db/`、`services/` 目录;无元数据。 +- **建议**:空壳占位,建议要么补全实现并接入标准,要么从 plugin_dirs 移除/删除空目录,避免启动加载空插件。 + +#### web_hub +- **现状**:`__init__.py` + `dashboard.py`;已调用 `register_web_plugin`;无 __plugin_meta__。 +- **建议**:补 `__plugin_meta__`(type="application");作为全局 Web 入口插件,可加 `config.py` 暴露 hub 开关/标题等;dashboard.py 归 `web/`。 + +### 3.4 工具库 / 跨插件 + +#### hexi_core +- **现状**:`cooldown.py`、`custom_utils.py`、`message_handle.py`、`message_utils.py`、`plugin_control.py`、`plugin_manager.py`、`rate_limit.py`;8 个文件 import nonebot。 +- **差距**:本质上就是 `utils/` 层的公共库,无 config/分层。 +- **建议**:整包可作为 `utils/` 性质模块保留;不必拆 MTSS(它不对外提供命令,主要被其它插件 import)。可选:把部分能力注册为可配置项(如冷却/限流阈值经 register_config_items),给 __init__ 加薄说明。 + +--- + +## 4. 全局规范整改清单(跨插件) + +1. **`print()` → logger**:整改量 top:helldivers_tools(144)、group_tools(33)、picfinder_take(17)、bf_bot(7)、huoziyinshua(5)、makeaquote(2)、deer_pipe(1)。 +2. **`from x import *` → 显式导入**:bf_bot(21)、deer_pipe(3)、dailywife(2)。 +3. **裸 `except:` → 具体异常**:dailywife(2)。 +4. **数据路径硬编码 → `get_data_dir()`/插件路径**:dailywife(`config/.json`)、random_jm_code(`jm_code.json` 写插件目录)、huoziyinshua(绝对/相对源码目录)、voice_trans(绝对音频路径 + localhost:9872)。 +5. **async 内同步阻塞**:voice_trans 的 `Client.predict`(需 `asyncio.to_thread`);huoziyinshua `export`;ncm_saying httpx 建议加超时/重试。 +6. **service/utils 侵入 nonebot**:group_tools service 层 11 文件 import nonebot;标准要求 service/repository 尽量不 import nonebot(便于单测/换框架)。 +7. **测试/调试文件混入插件**:bf_bot `test.py`(3380 行)、helldivers_tools `temp/`(23 个临时脚本),建议移出插件目录或 gitignore。 +8. **重复 import / 代码清理**:random_jm_code(重复 import json/random)、deadlock(整文件注释态)。 +9. **__plugin_meta__ 缺失**:brash、web_hub;memes_ops 缺 `type="application"`。 +10. **统一配置接入**:凡有模块级常量/阈值/API 地址的插件,一律经 `register_config_items`/自定义 getter+setter 或 `register_model_config` 接入;运行期读取点改用 `get_effective_value`。 + +--- + +## 5. 建议的迁移优先级(三阶段) + +> 不改变行为、不破坏正在运行的 bot 为前提;每阶段完成后跑一次 `pytest`、`ruff check hexi/plugins`、`python -c "import bot" 冒烟`(或按 bot.py 启动)。 + +### 阶段 1(低风险,改规范不改结构) +- 全仓 `print()`→logger;去 `import *`;裸 except 改具体异常;删/挪 test.py、temp/;补 brash/web_hub 的 __plugin_meta__。 +- 影响面:不改任何命令/功能,仅日志与导入清晰度。 + +### 阶段 2(配置标准接入,中风险) +- 为无 config.py 的插件补 `config.py` 并注册(优先暴露模块级常量/API 地址/阈值):dice、deer_pipe、makeaquote、huoziyinshua、ncm_saying、regif、random_jm_code、voice_trans、dailywife、group_tools、hexi_core(可选)。 +- 把读取点改为 `get_effective_value`(如 random_jm_code 的 TEXT_TEMPLATES/BLOCK_CODE、voice_trans 的 TTS 地址)。 +- 处理数据路径硬编码(dailywife、random_jm_code、huoziyinshua)。 + +### 阶段 3(完整 MTSS 分层,高风险,拆分为多次 PR/会话) +- 按 3.1/3.2 建议,逐插件拆 `handlers/`、`services/`、`utils/`。 +- 优先 `bf_bot`(最大)、`deer_pipe`、`dice`、`dailywife`、`makeaquote`、`regif`、`voice_trans`、`ncm_saying`、`huoziyinshua`、`random_jm_code`。 +- 已分层插件做归一化命名(视频/群分析/群工具)与 web 收敛。 + +--- + +## 6. 风险提示 + +- **bf_bot 改动面最大**:命令多、图片生成多、有 `import *` 隐性依赖,拆分或去星导前必须先摸清 `data/`、`param.py`、`image_builder*` 相互引用;若现有 `test.py` 是手工测试,拆分后语义可能漂移。 +- **group_daily_analysis 不宜强行重命名**:其 core 分层已是领域驱动架构,重命名为 handlers/services/utils 破坏性大、收益低;只做配置接入与命名归一即可。 +- **社区/第三方插件**(memes、picstatus、learning_chat、steam_info、mc_server_status、ncm_saying、helldivers_tools、brash)在升级上游版本时,本地规范化会与上游 diff 冲突;建议这些插件**只做配置接入与日志规范,不做大结构重构**。 +- **deadlock / brash 为停用或空壳**:不建议投入重构,先决策去留。 + +--- + +## 附录 A:配置标准核对表(逐插件) + +| 插件 | plugin_id 约定(模块名) | 是否注册 schema | 是否暴露 Web 表单 | 运行期读生效值 | 数据路径规范 | +|---|---|---|---|---|---| +| galgame_card | ✅ | ✅ register_model_config | ✅ | 🟡 部分 | ✅ | +| helldivers_tools | ✅ | ✅ | ✅ | 🟡 部分 | 🟡 有 temp/ | +| learning_chat | ✅ | 🟡 自有 yml,未接标准 | 🟡(自有后台) | 🟡 | ✅ | +| mc_server_status | ✅ | ✅ | ✅ | 🟡 | ✅ | +| picfinder_take | ✅ | ✅ register_config_items | ✅ | ✅ 部分 | ✅ | +| picstatus | ✅ | ✅ | ✅ | 🟡 | ✅ | +| steam_info | ✅ | ✅ | ✅ | 🟡 | ✅ | +| video_analysis | ✅ | 🟡 config 存在但入口未 register | 🟡 | 🟡 | ✅ | +| group_tools | ✅ | ❌ | ❌ | ❌ | 🟡 res/ 在源码目录 | +| group_daily_analysis | ✅ | 🟡 自有配置 | 🟡(自有 Web) | 🟡 | 🟡 | +| 其余扁平插件 | ✅(多数) | ❌ | ❌ | ❌ | ❌(写插件目录/硬编码) | diff --git a/hexi/plugins/memes_ops/__init__.py b/hexi/plugins/memes_ops/__init__.py index ea67ebc..bd29214 100644 --- a/hexi/plugins/memes_ops/__init__.py +++ b/hexi/plugins/memes_ops/__init__.py @@ -33,6 +33,7 @@ __plugin_meta__ = PluginMetadata( name="表情裸词操作", description="恢复“表情 操作词”的裸词用法(对称 右、摸 圆、小丑 爷 等)", usage="对称 右 / 鬼畜 下 / 摸 圆 / 小丑 爷 / 小丑面具 前", + type="application", ) try: diff --git a/hexi/plugins/nonebot_plugin_bf_bot/test.py b/hexi/plugins/nonebot_plugin_bf_bot/test.py deleted file mode 100644 index 284e17a..0000000 --- a/hexi/plugins/nonebot_plugin_bf_bot/test.py +++ /dev/null @@ -1,3380 +0,0 @@ -from PIL import Image, ImageDraw, ImageFont - -from tracker_data import * - -weapon_data = { - "weapons": [ - { - "type": "Machine Guns", - "weaponName": "L110", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_Minimi_PKG_Factory_MED-0e29fce7.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_Minimi_PKG_Factory_MED-0e29fce7.webp", - "id": "mg_l110", - "kills": 74, - "damage": 15353, - "assistsDamage": 35, - "bodyKills": 61, - "headshotKills": 13, - "hipfireKills": 1, - "multiKills": 12, - "accuracy": "9.52%", - "killsPerMinute": 1.07, - "damagePerMinute": 222.29, - "headshots": "17.57%", - "hitVKills": 8.59, - "shotsHit": 636, - "shotsFired": 6683, - "scopedKills": 73, - "spawns": 39, - "timeEquipped": 4144 - }, - { - "type": "SMG-PDWs", - "weaponName": "PW5A3", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_MP5MLI_PKG_Factory_MED-2d1944b7.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_MP5MLI_PKG_Factory_MED-2d1944b7.webp", - "id": "smg_pw5a3", - "kills": 7, - "damage": 1562, - "assistsDamage": 1, - "bodyKills": 7, - "headshotKills": 0, - "hipfireKills": 1, - "multiKills": 0, - "accuracy": "18.99%", - "killsPerMinute": 0.46, - "damagePerMinute": 102.99, - "headshots": "0.0%", - "hitVKills": 18.71, - "shotsHit": 131, - "shotsFired": 690, - "scopedKills": 6, - "spawns": 0, - "timeEquipped": 910 - }, - { - "type": "Assault Rifles", - "weaponName": "M433", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_HK433_PKG_Factory_MED-b06f02f7.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_HK433_PKG_Factory_MED-b06f02f7.webp", - "id": "ar_m433", - "kills": 607, - "damage": 71600, - "assistsDamage": 284, - "bodyKills": 526, - "headshotKills": 81, - "hipfireKills": 96, - "multiKills": 78, - "accuracy": "13.12%", - "killsPerMinute": 1.71, - "damagePerMinute": 201.52, - "headshots": "13.34%", - "hitVKills": 4.84, - "shotsHit": 2939, - "shotsFired": 22402, - "scopedKills": 511, - "spawns": 390, - "timeEquipped": 21318 - }, - { - "type": "Machine Guns", - "weaponName": "RPKM", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_RPKM_PKG_Factory_MED-755b785f.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_RPKM_PKG_Factory_MED-755b785f.webp", - "id": "mg_rpkm", - "kills": 88, - "damage": 16592, - "assistsDamage": 22, - "bodyKills": 80, - "headshotKills": 8, - "hipfireKills": 6, - "multiKills": 9, - "accuracy": "24.84%", - "killsPerMinute": 1.08, - "damagePerMinute": 202.79, - "headshots": "9.09%", - "hitVKills": 12.9, - "shotsHit": 1135, - "shotsFired": 4570, - "scopedKills": 82, - "spawns": 1, - "timeEquipped": 4909 - }, - { - "type": "Shotguns", - "weaponName": "M87A1", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_590A1_PKG_Factory_MED-4b387330.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_590A1_PKG_Factory_MED-4b387330.webp", - "id": "sg_m87a1", - "kills": 351, - "damage": 22678, - "assistsDamage": 72, - "bodyKills": 166, - "headshotKills": 185, - "hipfireKills": 122, - "multiKills": 31, - "accuracy": "91.29%", - "killsPerMinute": 2.72, - "damagePerMinute": 175.44, - "headshots": "52.71%", - "hitVKills": 1.88, - "shotsHit": 660, - "shotsFired": 723, - "scopedKills": 229, - "spawns": 149, - "timeEquipped": 7756 - }, - { - "type": "Pistols", - "weaponName": "P18", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_M18_PKG_Factory_MED-88261bf8.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_M18_PKG_Factory_MED-88261bf8.webp", - "id": "pst_p18", - "kills": 14, - "damage": 2080, - "assistsDamage": 12, - "bodyKills": 9, - "headshotKills": 5, - "hipfireKills": 6, - "multiKills": 4, - "accuracy": "23.77%", - "killsPerMinute": 0.79, - "damagePerMinute": 116.85, - "headshots": "35.71%", - "hitVKills": 6.93, - "shotsHit": 97, - "shotsFired": 408, - "scopedKills": 8, - "spawns": 1336, - "timeEquipped": 1068 - }, - { - "type": "Carbines", - "weaponName": "M277", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_XM7_PKG_Factory_MED-26271094.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_XM7_PKG_Factory_MED-26271094.webp", - "id": "crb_x277", - "kills": 420, - "damage": 52607, - "assistsDamage": 174, - "bodyKills": 309, - "headshotKills": 111, - "hipfireKills": 17, - "multiKills": 38, - "accuracy": "17.03%", - "killsPerMinute": 1.85, - "damagePerMinute": 231.61, - "headshots": "26.43%", - "hitVKills": 4.32, - "shotsHit": 1813, - "shotsFired": 10649, - "scopedKills": 403, - "spawns": 238, - "timeEquipped": 13628 - }, - { - "type": "Assault Rifles", - "weaponName": "B36A4", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_G36_PKG_Factory_MED-fb5466ec.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_G36_PKG_Factory_MED-fb5466ec.webp", - "id": "ar_b36a4", - "kills": 1045, - "damage": 48359, - "assistsDamage": 141, - "bodyKills": 547, - "headshotKills": 498, - "hipfireKills": 44, - "multiKills": 24, - "accuracy": "19.59%", - "killsPerMinute": 3.73, - "damagePerMinute": 172.69, - "headshots": "47.66%", - "hitVKills": 3.22, - "shotsHit": 3363, - "shotsFired": 17165, - "scopedKills": 1001, - "spawns": 172, - "timeEquipped": 16802 - }, - { - "type": "Assault Rifles", - "weaponName": "L85A3", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_L85A3_PKG_Factory_MED-9bd0deaa.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_L85A3_PKG_Factory_MED-9bd0deaa.webp", - "id": "ar_l85a3", - "kills": 785, - "damage": 16153, - "assistsDamage": 60, - "bodyKills": 315, - "headshotKills": 470, - "hipfireKills": 8, - "multiKills": 4, - "accuracy": "28.29%", - "killsPerMinute": 7.26, - "damagePerMinute": 149.47, - "headshots": "59.87%", - "hitVKills": 2.05, - "shotsHit": 1609, - "shotsFired": 5687, - "scopedKills": 777, - "spawns": 111, - "timeEquipped": 6484 - }, - { - "type": "Rifles", - "weaponName": "M2010 ESR", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_M2010ESR_PKG_Factory_MED-f94fdae6.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_M2010ESR_PKG_Factory_MED-f94fdae6.webp", - "id": "snp_m2010", - "kills": 553, - "damage": 53403, - "assistsDamage": 32, - "bodyKills": 150, - "headshotKills": 403, - "hipfireKills": 200, - "multiKills": 51, - "accuracy": "47.56%", - "killsPerMinute": 2.49, - "damagePerMinute": 240.36, - "headshots": "72.88%", - "hitVKills": 1.37, - "shotsHit": 760, - "shotsFired": 1598, - "scopedKills": 353, - "spawns": 81, - "timeEquipped": 13331 - }, - { - "type": "Shotguns", - "weaponName": "M1014", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_M1014_PKG_Factory_MED-e011854a.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_M1014_PKG_Factory_MED-e011854a.webp", - "id": "sg_m1014", - "kills": 142, - "damage": 15520, - "assistsDamage": 19, - "bodyKills": 127, - "headshotKills": 15, - "hipfireKills": 138, - "multiKills": 11, - "accuracy": "76.98%", - "killsPerMinute": 4.06, - "damagePerMinute": 444.27, - "headshots": "10.56%", - "hitVKills": 2.8, - "shotsHit": 398, - "shotsFired": 517, - "scopedKills": 4, - "spawns": 31, - "timeEquipped": 2096 - }, - { - "type": "Carbines", - "weaponName": "AK-205", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_AK205_PKG_Factory_MED-6d376081.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_AK205_PKG_Factory_MED-6d376081.webp", - "id": "crb_ak205", - "kills": 30, - "damage": 5519, - "assistsDamage": 29, - "bodyKills": 25, - "headshotKills": 5, - "hipfireKills": 6, - "multiKills": 0, - "accuracy": "12.01%", - "killsPerMinute": 0.76, - "damagePerMinute": 139.49, - "headshots": "16.67%", - "hitVKills": 12.8, - "shotsHit": 384, - "shotsFired": 3197, - "scopedKills": 24, - "spawns": 26, - "timeEquipped": 2374 - }, - { - "type": "DMRs", - "weaponName": "SVK-8.6", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_SVCh_PKG_Factory_MED-bb06d385.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_SVCh_PKG_Factory_MED-bb06d385.webp", - "id": "dmr_svk86", - "kills": 262, - "damage": 42653, - "assistsDamage": 95, - "bodyKills": 144, - "headshotKills": 118, - "hipfireKills": 2, - "multiKills": 36, - "accuracy": "33.32%", - "killsPerMinute": 1.31, - "damagePerMinute": 212.95, - "headshots": "45.04%", - "hitVKills": 3.19, - "shotsHit": 837, - "shotsFired": 2512, - "scopedKills": 260, - "spawns": 76, - "timeEquipped": 12018 - }, - { - "type": "SMG-PDWs", - "weaponName": "SGX", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_MPX_PKG_Factory_MED-e822f017.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_MPX_PKG_Factory_MED-e822f017.webp", - "id": "smg_sgx", - "kills": 9788, - "damage": 526470, - "assistsDamage": 7, - "bodyKills": 7110, - "headshotKills": 2678, - "hipfireKills": 3088, - "multiKills": 85, - "accuracy": "54.83%", - "killsPerMinute": 56.3, - "damagePerMinute": 3028.3, - "headshots": "27.36%", - "hitVKills": 2.37, - "shotsHit": 23240, - "shotsFired": 42387, - "scopedKills": 6700, - "spawns": 65, - "timeEquipped": 10431 - }, - { - "type": "DMRs", - "weaponName": "LMR27", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_ARADMR_PKG_Factory_MED-dfe224de.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_ARADMR_PKG_Factory_MED-dfe224de.webp", - "id": "dmr_lmr27", - "kills": 5, - "damage": 765, - "assistsDamage": 2, - "bodyKills": 5, - "headshotKills": 0, - "hipfireKills": 0, - "multiKills": 0, - "accuracy": "30.0%", - "killsPerMinute": 1.18, - "damagePerMinute": 180.0, - "headshots": "0.0%", - "hitVKills": 7.2, - "shotsHit": 36, - "shotsFired": 120, - "scopedKills": 5, - "spawns": 3, - "timeEquipped": 255 - }, - { - "type": "Carbines", - "weaponName": "QBZ-192", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_QBZ192_PKG_Factory_MED-dc0a546b.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_QBZ192_PKG_Factory_MED-dc0a546b.webp", - "id": "crb_qbz192", - "kills": 75, - "damage": 10219, - "assistsDamage": 52, - "bodyKills": 72, - "headshotKills": 3, - "hipfireKills": 4, - "multiKills": 7, - "accuracy": "12.36%", - "killsPerMinute": 1.08, - "damagePerMinute": 147.64, - "headshots": "4.0%", - "hitVKills": 3.83, - "shotsHit": 287, - "shotsFired": 2322, - "scopedKills": 71, - "spawns": 104, - "timeEquipped": 4153 - }, - { - "type": "Carbines", - "weaponName": "M417 A2", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_HK417A2_PKG_Factory_MED-494ffe6e.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_HK417A2_PKG_Factory_MED-494ffe6e.webp", - "id": "crb_m417a2", - "kills": 1942, - "damage": 52408, - "assistsDamage": 156, - "bodyKills": 638, - "headshotKills": 1304, - "hipfireKills": 103, - "multiKills": 54, - "accuracy": "24.49%", - "killsPerMinute": 6.87, - "damagePerMinute": 185.47, - "headshots": "67.15%", - "hitVKills": 1.78, - "shotsHit": 3464, - "shotsFired": 14143, - "scopedKills": 1839, - "spawns": 266, - "timeEquipped": 16954 - }, - { - "type": "Machine Guns", - "weaponName": "DRS-IAR", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_M27IAR_PKG_Factory_MED-ae6675cd.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_M27IAR_PKG_Factory_MED-ae6675cd.webp", - "id": "mg_drsiar", - "kills": 729, - "damage": 83389, - "assistsDamage": 45, - "bodyKills": 599, - "headshotKills": 130, - "hipfireKills": 115, - "multiKills": 61, - "accuracy": "28.88%", - "killsPerMinute": 5.56, - "damagePerMinute": 636.4, - "headshots": "17.83%", - "hitVKills": 4.49, - "shotsHit": 3270, - "shotsFired": 11323, - "scopedKills": 614, - "spawns": 77, - "timeEquipped": 7862 - }, - { - "type": "Assault Rifles", - "weaponName": "KORD 6P67", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_6P67_PKG_Factory_MED-827b9414.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_6P67_PKG_Factory_MED-827b9414.webp", - "id": "ar_kord6p67", - "kills": 502, - "damage": 64820, - "assistsDamage": 98, - "bodyKills": 429, - "headshotKills": 73, - "hipfireKills": 42, - "multiKills": 107, - "accuracy": "25.85%", - "killsPerMinute": 2.55, - "damagePerMinute": 328.9, - "headshots": "14.54%", - "hitVKills": 7.41, - "shotsHit": 3722, - "shotsFired": 14397, - "scopedKills": 460, - "spawns": 178, - "timeEquipped": 11825 - }, - { - "type": "SMG-PDWs", - "weaponName": "USG-90", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_P90_PKG_Factory_MED-2ab1db64.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_P90_PKG_Factory_MED-2ab1db64.webp", - "id": "smg_usg90", - "kills": 10, - "damage": 1217, - "assistsDamage": 4, - "bodyKills": 6, - "headshotKills": 4, - "hipfireKills": 3, - "multiKills": 1, - "accuracy": "16.58%", - "killsPerMinute": 0.75, - "damagePerMinute": 91.39, - "headshots": "40.0%", - "hitVKills": 6.6, - "shotsHit": 66, - "shotsFired": 398, - "scopedKills": 7, - "spawns": 0, - "timeEquipped": 799 - }, - { - "type": "Carbines", - "weaponName": "M4A1", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_M4A1_PKG_Factory_MED-34529a82.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_M4A1_PKG_Factory_MED-34529a82.webp", - "id": "crb_m4a1", - "kills": 2309, - "damage": 36071, - "assistsDamage": 141, - "bodyKills": 730, - "headshotKills": 1579, - "hipfireKills": 92, - "multiKills": 42, - "accuracy": "26.14%", - "killsPerMinute": 13.41, - "damagePerMinute": 209.53, - "headshots": "68.38%", - "hitVKills": 1.6, - "shotsHit": 3691, - "shotsFired": 14118, - "scopedKills": 2217, - "spawns": 199, - "timeEquipped": 10329 - }, - { - "type": "Machine Guns", - "weaponName": "KTS100 MK8", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_Ultimax_PKG_Factory_MED-a8ebb482.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_Ultimax_PKG_Factory_MED-a8ebb482.webp", - "id": "mg_kts100mk8", - "kills": 4524, - "damage": 25524, - "assistsDamage": 76, - "bodyKills": 1865, - "headshotKills": 2659, - "hipfireKills": 54, - "multiKills": 23, - "accuracy": "41.99%", - "killsPerMinute": 19.76, - "damagePerMinute": 111.48, - "headshots": "58.78%", - "hitVKills": 1.38, - "shotsHit": 6236, - "shotsFired": 14851, - "scopedKills": 4470, - "spawns": 88, - "timeEquipped": 13737 - }, - { - "type": "Pistols", - "weaponName": "M45A1", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_M45A1_PKG_Factory_MED-8c41691b.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_M45A1_PKG_Factory_MED-8c41691b.webp", - "id": "pst_m45a1", - "kills": 228, - "damage": 252, - "assistsDamage": 0, - "bodyKills": 30, - "headshotKills": 198, - "hipfireKills": 37, - "multiKills": 2, - "accuracy": "211.11%", - "killsPerMinute": 93.7, - "damagePerMinute": 103.56, - "headshots": "86.84%", - "hitVKills": 1.0, - "shotsHit": 228, - "shotsFired": 108, - "scopedKills": 191, - "spawns": 69, - "timeEquipped": 146 - }, - { - "type": "SMG-PDWs", - "weaponName": "KV9", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_Vector_PKG_Factory_MED-b5631ed7.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_Vector_PKG_Factory_MED-b5631ed7.webp", - "id": "smg_kv9", - "kills": 169, - "damage": 21081, - "assistsDamage": 83, - "bodyKills": 148, - "headshotKills": 21, - "hipfireKills": 58, - "multiKills": 18, - "accuracy": "16.2%", - "killsPerMinute": 1.42, - "damagePerMinute": 177.47, - "headshots": "12.43%", - "hitVKills": 5.8, - "shotsHit": 981, - "shotsFired": 6057, - "scopedKills": 111, - "spawns": 142, - "timeEquipped": 7127 - }, - { - "type": "Assault Rifles", - "weaponName": "SOR-556 Mk2", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_SCARL_PKG_Factory_MED-b44467bb.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_SCARL_PKG_Factory_MED-b44467bb.webp", - "id": "ar_sor556mk2", - "kills": 451, - "damage": 54559, - "assistsDamage": 175, - "bodyKills": 367, - "headshotKills": 84, - "hipfireKills": 23, - "multiKills": 47, - "accuracy": "20.04%", - "killsPerMinute": 2.27, - "damagePerMinute": 274.14, - "headshots": "18.63%", - "hitVKills": 4.89, - "shotsHit": 2205, - "shotsFired": 11002, - "scopedKills": 428, - "spawns": 139, - "timeEquipped": 11941 - }, - { - "type": "SMG-PDWs", - "weaponName": "PW7A2", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_MP7A2_PKG_Factory_MED-406bc965.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_MP7A2_PKG_Factory_MED-406bc965.webp", - "id": "smg_pw7a2", - "kills": 216, - "damage": 20576, - "assistsDamage": 15, - "bodyKills": 201, - "headshotKills": 15, - "hipfireKills": 75, - "multiKills": 54, - "accuracy": "26.43%", - "killsPerMinute": 5.13, - "damagePerMinute": 488.55, - "headshots": "6.94%", - "hitVKills": 6.2, - "shotsHit": 1339, - "shotsFired": 5066, - "scopedKills": 141, - "spawns": 4, - "timeEquipped": 2527 - }, - { - "type": "Machine Guns", - "weaponName": "M123K", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_MG4K_PKG_Factory_MED-cc064690.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_MG4K_PKG_Factory_MED-cc064690.webp", - "id": "mg_m123k", - "kills": 84, - "damage": 15303, - "assistsDamage": 40, - "bodyKills": 75, - "headshotKills": 9, - "hipfireKills": 22, - "multiKills": 8, - "accuracy": "12.66%", - "killsPerMinute": 1.03, - "damagePerMinute": 187.92, - "headshots": "10.71%", - "hitVKills": 11.15, - "shotsHit": 937, - "shotsFired": 7403, - "scopedKills": 62, - "spawns": 63, - "timeEquipped": 4886 - }, - { - "type": "Pistols", - "weaponName": "M44", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_RagingHunter_PKG_Factory_MED-f9773307.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_RagingHunter_PKG_Factory_MED-f9773307.webp", - "id": "pst_m44", - "kills": 18, - "damage": 4263, - "assistsDamage": 14, - "bodyKills": 12, - "headshotKills": 6, - "hipfireKills": 4, - "multiKills": 0, - "accuracy": "34.78%", - "killsPerMinute": 0.27, - "damagePerMinute": 63.98, - "headshots": "33.33%", - "hitVKills": 5.78, - "shotsHit": 104, - "shotsFired": 299, - "scopedKills": 14, - "spawns": 854, - "timeEquipped": 3998 - }, - { - "type": "Machine Guns", - "weaponName": "M250", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_M250_PKG_Factory_MED-6e230a71.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_M250_PKG_Factory_MED-6e230a71.webp", - "id": "mg_xm250", - "kills": 328, - "damage": 38530, - "assistsDamage": 90, - "bodyKills": 289, - "headshotKills": 39, - "hipfireKills": 27, - "multiKills": 58, - "accuracy": "18.11%", - "killsPerMinute": 2.33, - "damagePerMinute": 273.68, - "headshots": "11.89%", - "hitVKills": 4.3, - "shotsHit": 1412, - "shotsFired": 7796, - "scopedKills": 301, - "spawns": 166, - "timeEquipped": 8447 - }, - { - "type": "SMG-PDWs", - "weaponName": "UMG-40", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_UMP40_PKG_Factory_MED-22afa646.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_UMP40_PKG_Factory_MED-22afa646.webp", - "id": "smg_umg40", - "kills": 4, - "damage": 926, - "assistsDamage": 1, - "bodyKills": 4, - "headshotKills": 0, - "hipfireKills": 0, - "multiKills": 1, - "accuracy": "24.37%", - "killsPerMinute": 0.43, - "damagePerMinute": 98.51, - "headshots": "0.0%", - "hitVKills": 21.75, - "shotsHit": 87, - "shotsFired": 357, - "scopedKills": 4, - "spawns": 3, - "timeEquipped": 564 - }, - { - "type": "Assault Rifles", - "weaponName": "TR-7", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_Tavor7_PKG_Factory_MED-e682f267.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_Tavor7_PKG_Factory_MED-e682f267.webp", - "id": "ar_tr7", - "kills": 616, - "damage": 68498, - "assistsDamage": 107, - "bodyKills": 474, - "headshotKills": 142, - "hipfireKills": 143, - "multiKills": 55, - "accuracy": "16.89%", - "killsPerMinute": 2.46, - "damagePerMinute": 273.5, - "headshots": "23.05%", - "hitVKills": 3.68, - "shotsHit": 2268, - "shotsFired": 13428, - "scopedKills": 473, - "spawns": 252, - "timeEquipped": 15027 - }, - { - "type": "SMG-PDWs", - "weaponName": "SL9", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_APDW_PKG_Factory_MED-c4d1b829.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_APDW_PKG_Factory_MED-c4d1b829.webp", - "id": "smg_sl9", - "kills": 376, - "damage": 37358, - "assistsDamage": 17, - "bodyKills": 316, - "headshotKills": 60, - "hipfireKills": 19, - "multiKills": 77, - "accuracy": "21.84%", - "killsPerMinute": 4.86, - "damagePerMinute": 483.08, - "headshots": "15.96%", - "hitVKills": 4.85, - "shotsHit": 1824, - "shotsFired": 8350, - "scopedKills": 357, - "spawns": 25, - "timeEquipped": 4640 - }, - { - "type": "Machine Guns", - "weaponName": "M240L", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_M240L_PKG_Factory_MED-1fa18e0c.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_M240L_PKG_Factory_MED-1fa18e0c.webp", - "id": "mg_m240l", - "kills": 45, - "damage": 4029, - "assistsDamage": 0, - "bodyKills": 40, - "headshotKills": 5, - "hipfireKills": 3, - "multiKills": 3, - "accuracy": "31.3%", - "killsPerMinute": 7.03, - "damagePerMinute": 629.53, - "headshots": "11.11%", - "hitVKills": 3.31, - "shotsHit": 149, - "shotsFired": 476, - "scopedKills": 42, - "spawns": 1, - "timeEquipped": 384 - }, - { - "type": "SMG-PDWs", - "weaponName": "SCW-10", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_APC10_PKG_Factory_MED-716a97fb.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_APC10_PKG_Factory_MED-716a97fb.webp", - "id": "smg_scw10", - "kills": 571, - "damage": 61171, - "assistsDamage": 139, - "bodyKills": 495, - "headshotKills": 76, - "hipfireKills": 48, - "multiKills": 105, - "accuracy": "18.37%", - "killsPerMinute": 2.47, - "damagePerMinute": 264.68, - "headshots": "13.31%", - "hitVKills": 4.04, - "shotsHit": 2308, - "shotsFired": 12565, - "scopedKills": 523, - "spawns": 232, - "timeEquipped": 13867 - }, - { - "type": "Assault Rifles", - "weaponName": "NVO-228E", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_ACE32_PKG_Factory_MED-39a97220.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_ACE32_PKG_Factory_MED-39a97220.webp", - "id": "ar_nvo228e", - "kills": 960, - "damage": 61885, - "assistsDamage": 101, - "bodyKills": 611, - "headshotKills": 349, - "hipfireKills": 72, - "multiKills": 39, - "accuracy": "28.84%", - "killsPerMinute": 5.78, - "damagePerMinute": 372.69, - "headshots": "36.35%", - "hitVKills": 2.44, - "shotsHit": 2344, - "shotsFired": 8128, - "scopedKills": 888, - "spawns": 114, - "timeEquipped": 9963 - }, - { - "type": "Machine Guns", - "weaponName": "M/60", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_M60E6_PKG_Factory_MED-e600bb28.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_M60E6_PKG_Factory_MED-e600bb28.webp", - "id": "mg_m60", - "kills": 5, - "damage": 1191, - "assistsDamage": 5, - "bodyKills": 5, - "headshotKills": 0, - "hipfireKills": 0, - "multiKills": 1, - "accuracy": "6.74%", - "killsPerMinute": 0.47, - "damagePerMinute": 112.01, - "headshots": "0.0%", - "hitVKills": 11.8, - "shotsHit": 59, - "shotsFired": 876, - "scopedKills": 5, - "spawns": 1, - "timeEquipped": 638 - }, - { - "type": "Rifles", - "weaponName": "PSR", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_MRAD_PKG_Factory_MED-5035ce99.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_MRAD_PKG_Factory_MED-5035ce99.webp", - "id": "snp_psr", - "kills": 39, - "damage": 7457, - "assistsDamage": 11, - "bodyKills": 17, - "headshotKills": 22, - "hipfireKills": 22, - "multiKills": 0, - "accuracy": "30.75%", - "killsPerMinute": 0.49, - "damagePerMinute": 94.61, - "headshots": "56.41%", - "hitVKills": 3.56, - "shotsHit": 139, - "shotsFired": 452, - "scopedKills": 17, - "spawns": 9, - "timeEquipped": 4729 - }, - { - "type": "DMRs", - "weaponName": "SVDM", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_SVDM_PKG_Factory_MED-b6c9aa50.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_SVDM_PKG_Factory_MED-b6c9aa50.webp", - "id": "dmr_svdm", - "kills": 3, - "damage": 475, - "assistsDamage": 3, - "bodyKills": 1, - "headshotKills": 2, - "hipfireKills": 0, - "multiKills": 0, - "accuracy": "20.0%", - "killsPerMinute": 0.28, - "damagePerMinute": 44.88, - "headshots": "66.67%", - "hitVKills": 6.33, - "shotsHit": 19, - "shotsFired": 95, - "scopedKills": 3, - "spawns": 1, - "timeEquipped": 635 - }, - { - "type": "Assault Rifles", - "weaponName": "AK4D", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_G3A4_PKG_Factory_MED-0575cf00.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_G3A4_PKG_Factory_MED-0575cf00.webp", - "id": "ar_ak4d", - "kills": 155, - "damage": 17827, - "assistsDamage": 48, - "bodyKills": 147, - "headshotKills": 8, - "hipfireKills": 6, - "multiKills": 23, - "accuracy": "20.76%", - "killsPerMinute": 1.53, - "damagePerMinute": 176.24, - "headshots": "5.16%", - "hitVKills": 4.49, - "shotsHit": 696, - "shotsFired": 3353, - "scopedKills": 149, - "spawns": 80, - "timeEquipped": 6069 - }, - { - "type": "Carbines", - "weaponName": "SOR-300SC", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_SCARSC_PKG_Factory_MED-7a6a50ff.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_SCARSC_PKG_Factory_MED-7a6a50ff.webp", - "id": "crb_sor300sc", - "kills": 5, - "damage": 1016, - "assistsDamage": 4, - "bodyKills": 4, - "headshotKills": 1, - "hipfireKills": 0, - "multiKills": 0, - "accuracy": "12.99%", - "killsPerMinute": 0.24, - "damagePerMinute": 47.77, - "headshots": "20.0%", - "hitVKills": 20.0, - "shotsHit": 100, - "shotsFired": 770, - "scopedKills": 5, - "spawns": 0, - "timeEquipped": 1276 - }, - { - "type": "Carbines", - "weaponName": "SG 553R", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_SIG553R_PKG_Factory_MED-afc2dfa8.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_SIG553R_PKG_Factory_MED-afc2dfa8.webp", - "id": "crb_sg553r", - "kills": 4207, - "damage": 30073, - "assistsDamage": 119, - "bodyKills": 3204, - "headshotKills": 1003, - "hipfireKills": 1264, - "multiKills": 37, - "accuracy": "45.09%", - "killsPerMinute": 21.64, - "damagePerMinute": 154.71, - "headshots": "23.84%", - "hitVKills": 1.16, - "shotsHit": 4895, - "shotsFired": 10855, - "scopedKills": 2943, - "spawns": 200, - "timeEquipped": 11663 - }, - { - "type": "Carbines", - "weaponName": "GRT-BC", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_MSBSGROTB_PKG_Factory_MED-25acf006.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_MSBSGROTB_PKG_Factory_MED-25acf006.webp", - "id": "crb_grtbc", - "kills": 22, - "damage": 3216, - "assistsDamage": 20, - "bodyKills": 17, - "headshotKills": 5, - "hipfireKills": 7, - "multiKills": 1, - "accuracy": "12.16%", - "killsPerMinute": 0.76, - "damagePerMinute": 111.15, - "headshots": "22.73%", - "hitVKills": 7.95, - "shotsHit": 175, - "shotsFired": 1439, - "scopedKills": 15, - "spawns": 21, - "timeEquipped": 1736 - }, - { - "type": "Shotguns", - "weaponName": "18.5KS-K", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_185KSK_PKG_Factory_MED-432c353f.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_MSBSGROTB_PKG_Factory_MED-25acf006.webp", - "id": "sg_185ksk", - "kills": 17, - "damage": 2390, - "assistsDamage": 9, - "bodyKills": 15, - "headshotKills": 2, - "hipfireKills": 17, - "multiKills": 1, - "accuracy": "22.83%", - "killsPerMinute": 0.87, - "damagePerMinute": 122.46, - "headshots": "11.76%", - "hitVKills": 2.94, - "shotsHit": 50, - "shotsFired": 219, - "scopedKills": 0, - "spawns": 30, - "timeEquipped": 1171 - }, - { - "type": "Pistols", - "weaponName": "ES 5.7", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_M18_PKG_Factory_MED-88261bf8.webp", - "id": "pst_es57", - "kills": 9183, - "damage": 565421, - "assistsDamage": 7, - "bodyKills": 3568, - "headshotKills": 5615, - "hipfireKills": 2930, - "multiKills": 60, - "accuracy": "105.3%", - "killsPerMinute": 51.52, - "damagePerMinute": 3172.07, - "headshots": "61.15%", - "hitVKills": 2.51, - "shotsHit": 23019, - "shotsFired": 21860, - "scopedKills": 6253, - "spawns": 715, - "timeEquipped": 10695 - }, - { - "type": "DMRs", - "weaponName": "M39 EMR", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_SVCh_PKG_Factory_MED-bb06d385.webp", - "id": "dmr_m39emr", - "kills": 0, - "damage": 0, - "assistsDamage": 0, - "bodyKills": 0, - "headshotKills": 0, - "hipfireKills": 0, - "multiKills": 0, - "accuracy": "0.0%", - "killsPerMinute": 0.0, - "damagePerMinute": 0.0, - "headshots": "0.0%", - "hitVKills": 0.0, - "shotsHit": 0, - "shotsFired": 0, - "scopedKills": 0, - "spawns": 0, - "timeEquipped": 45 - }, - { - "type": "Rifles", - "weaponName": "SV-98", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_M2010ESR_PKG_Factory_MED-f94fdae6.webp", - "id": "snp_sv98", - "kills": 2, - "damage": 334, - "assistsDamage": 1, - "bodyKills": 1, - "headshotKills": 1, - "hipfireKills": 1, - "multiKills": 0, - "accuracy": "25.93%", - "killsPerMinute": 0.3, - "damagePerMinute": 50.1, - "headshots": "50.0%", - "hitVKills": 3.5, - "shotsHit": 7, - "shotsFired": 27, - "scopedKills": 1, - "spawns": 1, - "timeEquipped": 400 - } - ], -} -vehicle_data = { - "vehicles": [ - { - "type": "Air Combat", - "vehicleName": "Panthera KHT", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_MDV_Eurocopter_VSD0001-8003028d.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_MDV_Eurocopter_VSD0001-8003028d.webp", - "id": "air_panthera", - "kills": 166, - "killsPerMinute": 7.07, - "damage": 27206, - "spawns": 6, - "roadKills": 7, - "passengerAssists": 13, - "multiKills": 5, - "distanceTraveled": 50779, - "driverAssists": 1, - "vehiclesDestroyedWith": 7, - "assists": 14, - "damageTo": 3918, - "destroyed": 0, - "timeIn": 1408 - }, - { - "type": "Air Combat", - "vehicleName": "M77E Falchion", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_MDV_AH64E_VSD0001-dd0a7df6.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_MDV_AH64E_VSD0001-dd0a7df6.webp", - "id": "air_m77efalchio", - "kills": 0, - "killsPerMinute": 0, - "damage": 0, - "spawns": 0, - "roadKills": 0, - "passengerAssists": 0, - "multiKills": 0, - "distanceTraveled": 0, - "driverAssists": 0, - "vehiclesDestroyedWith": 0, - "assists": 0, - "damageTo": 0, - "destroyed": 0, - "timeIn": 0 - }, - { - "type": "Ground Combat", - "vehicleName": "Leo A4", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_MDV_Leopard_VSD0001-f8da51ee.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_MDV_Leopard_VSD0001-f8da51ee.webp", - "id": "sur_leoa4", - "kills": 22, - "killsPerMinute": 0.74, - "damage": 19307, - "spawns": 8, - "roadKills": 1, - "passengerAssists": 1, - "multiKills": 2, - "distanceTraveled": 6115, - "driverAssists": 13, - "vehiclesDestroyedWith": 1, - "assists": 14, - "damageTo": 43760, - "destroyed": 6, - "timeIn": 1789 - }, - { - "type": "Ground Combat", - "vehicleName": "Strf 09 A4", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_CV90_VSD0001-acd942b6.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_CV90_VSD0001-acd942b6.webp", - "id": "sur_strf09a4", - "kills": 140, - "killsPerMinute": 1.76, - "damage": 25699, - "spawns": 196, - "roadKills": 0, - "passengerAssists": 52, - "multiKills": 27, - "distanceTraveled": 12701, - "driverAssists": 41, - "vehiclesDestroyedWith": 2, - "assists": 93, - "damageTo": 20875, - "destroyed": 1, - "timeIn": 4770 - }, - { - "type": "Ground Combat", - "vehicleName": "M1A2 SEPv3", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_MDV_Abrams_VSD0001-5412a78d.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_MDV_Abrams_VSD0001-5412a78d.webp", - "id": "sur_m1a2sepv3", - "kills": 236, - "killsPerMinute": 1.54, - "damage": 67333, - "spawns": 46, - "roadKills": 0, - "passengerAssists": 164, - "multiKills": 32, - "distanceTraveled": 19222, - "driverAssists": 102, - "vehiclesDestroyedWith": 6, - "assists": 266, - "damageTo": 50600, - "destroyed": 9, - "timeIn": 9195 - }, - { - "type": "Ground Combat", - "vehicleName": "Cheetah 1A2", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_MDV_Gepard_VSD0001-d796732f.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_MDV_Gepard_VSD0001-d796732f.webp", - "id": "sur_cheetah1a2", - "kills": 0, - "killsPerMinute": 0.0, - "damage": 1521, - "spawns": 1, - "roadKills": 0, - "passengerAssists": 0, - "multiKills": 0, - "distanceTraveled": 737, - "driverAssists": 0, - "vehiclesDestroyedWith": 0, - "assists": 0, - "damageTo": 9876, - "destroyed": 0, - "timeIn": 139 - }, - { - "type": "Ground Combat", - "vehicleName": "Glider 96", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_MDV_Flyer60_VSD0005-1569869f.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_MDV_Flyer60_VSD0005-1569869f.webp", - "id": "sur_glider96", - "kills": 6, - "killsPerMinute": 0.28, - "damage": 1648, - "spawns": 7, - "roadKills": 1, - "passengerAssists": 0, - "multiKills": 1, - "distanceTraveled": 9884, - "driverAssists": 0, - "vehiclesDestroyedWith": 0, - "assists": 0, - "damageTo": 14447, - "destroyed": 0, - "timeIn": 1298 - }, - { - "type": "Ground Combat", - "vehicleName": "M3A3 Bradley", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_OB_VEH_Tank_Bradley_VSD0001_Dressing-66f252ca.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_OB_VEH_Tank_Bradley_VSD0001_Dressing-66f252ca.webp", - "id": "sur_bradley", - "kills": 82, - "killsPerMinute": 1.15, - "damage": 16995, - "spawns": 59, - "roadKills": 0, - "passengerAssists": 60, - "multiKills": 12, - "distanceTraveled": 14396, - "driverAssists": 14, - "vehiclesDestroyedWith": 2, - "assists": 74, - "damageTo": 30066, - "destroyed": 11, - "timeIn": 4296 - }, - { - "type": "Air Combat", - "vehicleName": "Su-57", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_MDV_SU57_VSD0001-1b5aa5ee.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_MDV_SU57_VSD0001-1b5aa5ee.webp", - "id": "air_su57", - "kills": 0, - "killsPerMinute": 0.0, - "damage": 204, - "spawns": 3, - "roadKills": 0, - "passengerAssists": 0, - "multiKills": 0, - "distanceTraveled": 13458, - "driverAssists": 0, - "vehiclesDestroyedWith": 0, - "assists": 0, - "damageTo": 1091, - "destroyed": 0, - "timeIn": 150 - }, - { - "type": "Air Combat", - "vehicleName": "F-61V", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_MDV_F16_VSD0001-5f951ec9.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_MDV_F16_VSD0001-5f951ec9.webp", - "id": "air_f61v", - "kills": 26, - "killsPerMinute": 4.53, - "damage": 6870, - "spawns": 4, - "roadKills": 26, - "passengerAssists": 0, - "multiKills": 1, - "distanceTraveled": 33186, - "driverAssists": 0, - "vehiclesDestroyedWith": 0, - "assists": 0, - "damageTo": 204, - "destroyed": 0, - "timeIn": 344 - }, - { - "type": "Air Combat", - "vehicleName": "F-39E", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_MDV_JAS39_VSD0001-9313d717.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_MDV_JAS39_VSD0001-9313d717.webp", - "id": "air_f39e", - "kills": 16, - "killsPerMinute": 5.36, - "damage": 3016, - "spawns": 0, - "roadKills": 6, - "passengerAssists": 0, - "multiKills": 4, - "distanceTraveled": 14990, - "driverAssists": 0, - "vehiclesDestroyedWith": 0, - "assists": 0, - "damageTo": 6196, - "destroyed": 1, - "timeIn": 179 - }, - { - "type": "Air Combat", - "vehicleName": "M77E Falchion", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_MDV_AH64E_VSD0001-dd0a7df6.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_MDV_AH64E_VSD0001-dd0a7df6.webp", - "id": "air_m77efalchion", - "kills": 4, - "killsPerMinute": 0.62, - "damage": 3246, - "spawns": 7, - "roadKills": 0, - "passengerAssists": 0, - "multiKills": 0, - "distanceTraveled": 14466, - "driverAssists": 0, - "vehiclesDestroyedWith": 0, - "assists": 0, - "damageTo": 6151, - "destroyed": 4, - "timeIn": 390 - }, - { - "type": "Ground Transport", - "vehicleName": "VECTOR", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_MDV_Vector_VSD0002-241efa80.webp", - "id": "sur_vector", - "kills": 0, - "killsPerMinute": 0.0, - "damage": 3, - "spawns": 1, - "roadKills": 0, - "passengerAssists": 0, - "multiKills": 0, - "distanceTraveled": 1496, - "driverAssists": 0, - "vehiclesDestroyedWith": 0, - "assists": 0, - "damageTo": 1525, - "destroyed": 2, - "timeIn": 169 - } - ], -} -sttr_list = ['CHEETAH 1A2.png', 'F-39E.png', 'F-61V.png', 'F-97 KESTREL.png', 'GE-26.png', 'GLIDER 96.png', - 'LEO A4.png', 'M1A2 SEPV3.png', 'M3A3 BRADLEY.png', 'M77E FALCHION.png', 'PANTHERA KHT.png', - 'STRF 09 A4.png', 'SU-57.png', 'UH-79 NATO.png', 'UH-79 PAX.png', 'VECTOR.png'] - -play_stat = { - "userId": 1008269664784, - "avatar": "https://eaavatarservice.akamaized.net/production/avatar/prod/userAvatar/52082828/416x416.PNG", - "userName": "Sansorano_Yume", - "id": 1004152464784, - "hasResults": True, - "platform": "pc", - "platformId": 0, - "weapons": [ - { - "type": "Machine Guns", - "weaponName": "L110", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_Minimi_PKG_Factory_MED-0e29fce7.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_Minimi_PKG_Factory_MED-0e29fce7.webp", - "id": "mg_l110", - "kills": 74, - "damage": 15353, - "assistsDamage": 35, - "bodyKills": 61, - "headshotKills": 13, - "hipfireKills": 1, - "multiKills": 12, - "accuracy": "9.52%", - "killsPerMinute": 1.07, - "damagePerMinute": 222.29, - "headshots": "17.57%", - "hitVKills": 8.59, - "shotsHit": 636, - "shotsFired": 6683, - "scopedKills": 73, - "spawns": 39, - "timeEquipped": 4144 - }, - { - "type": "SMG-PDWs", - "weaponName": "PW5A3", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_MP5MLI_PKG_Factory_MED-2d1944b7.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_MP5MLI_PKG_Factory_MED-2d1944b7.webp", - "id": "smg_pw5a3", - "kills": 7, - "damage": 1562, - "assistsDamage": 1, - "bodyKills": 7, - "headshotKills": 0, - "hipfireKills": 1, - "multiKills": 0, - "accuracy": "18.99%", - "killsPerMinute": 0.46, - "damagePerMinute": 102.99, - "headshots": "0.0%", - "hitVKills": 18.71, - "shotsHit": 131, - "shotsFired": 690, - "scopedKills": 6, - "spawns": 0, - "timeEquipped": 910 - }, - { - "type": "Assault Rifles", - "weaponName": "M433", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_HK433_PKG_Factory_MED-b06f02f7.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_HK433_PKG_Factory_MED-b06f02f7.webp", - "id": "ar_m433", - "kills": 607, - "damage": 71600, - "assistsDamage": 284, - "bodyKills": 526, - "headshotKills": 81, - "hipfireKills": 96, - "multiKills": 78, - "accuracy": "13.12%", - "killsPerMinute": 1.71, - "damagePerMinute": 201.52, - "headshots": "13.34%", - "hitVKills": 4.84, - "shotsHit": 2939, - "shotsFired": 22402, - "scopedKills": 511, - "spawns": 390, - "timeEquipped": 21318 - }, - { - "type": "Machine Guns", - "weaponName": "RPKM", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_RPKM_PKG_Factory_MED-755b785f.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_RPKM_PKG_Factory_MED-755b785f.webp", - "id": "mg_rpkm", - "kills": 88, - "damage": 16592, - "assistsDamage": 22, - "bodyKills": 80, - "headshotKills": 8, - "hipfireKills": 6, - "multiKills": 9, - "accuracy": "24.84%", - "killsPerMinute": 1.08, - "damagePerMinute": 202.79, - "headshots": "9.09%", - "hitVKills": 12.9, - "shotsHit": 1135, - "shotsFired": 4570, - "scopedKills": 82, - "spawns": 1, - "timeEquipped": 4909 - }, - { - "type": "Shotguns", - "weaponName": "M87A1", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_590A1_PKG_Factory_MED-4b387330.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_590A1_PKG_Factory_MED-4b387330.webp", - "id": "sg_m87a1", - "kills": 351, - "damage": 22678, - "assistsDamage": 72, - "bodyKills": 166, - "headshotKills": 185, - "hipfireKills": 122, - "multiKills": 31, - "accuracy": "91.29%", - "killsPerMinute": 2.72, - "damagePerMinute": 175.44, - "headshots": "52.71%", - "hitVKills": 1.88, - "shotsHit": 660, - "shotsFired": 723, - "scopedKills": 229, - "spawns": 149, - "timeEquipped": 7756 - }, - { - "type": "Pistols", - "weaponName": "P18", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_M18_PKG_Factory_MED-88261bf8.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_M18_PKG_Factory_MED-88261bf8.webp", - "id": "pst_p18", - "kills": 14, - "damage": 2080, - "assistsDamage": 12, - "bodyKills": 9, - "headshotKills": 5, - "hipfireKills": 6, - "multiKills": 4, - "accuracy": "23.77%", - "killsPerMinute": 0.79, - "damagePerMinute": 116.85, - "headshots": "35.71%", - "hitVKills": 6.93, - "shotsHit": 97, - "shotsFired": 408, - "scopedKills": 8, - "spawns": 1336, - "timeEquipped": 1068 - }, - { - "type": "Carbines", - "weaponName": "M277", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_XM7_PKG_Factory_MED-26271094.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_XM7_PKG_Factory_MED-26271094.webp", - "id": "crb_x277", - "kills": 420, - "damage": 52607, - "assistsDamage": 174, - "bodyKills": 309, - "headshotKills": 111, - "hipfireKills": 17, - "multiKills": 38, - "accuracy": "17.03%", - "killsPerMinute": 1.85, - "damagePerMinute": 231.61, - "headshots": "26.43%", - "hitVKills": 4.32, - "shotsHit": 1813, - "shotsFired": 10649, - "scopedKills": 403, - "spawns": 238, - "timeEquipped": 13628 - }, - { - "type": "Assault Rifles", - "weaponName": "B36A4", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_G36_PKG_Factory_MED-fb5466ec.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_G36_PKG_Factory_MED-fb5466ec.webp", - "id": "ar_b36a4", - "kills": 1045, - "damage": 48359, - "assistsDamage": 141, - "bodyKills": 547, - "headshotKills": 498, - "hipfireKills": 44, - "multiKills": 24, - "accuracy": "19.59%", - "killsPerMinute": 3.73, - "damagePerMinute": 172.69, - "headshots": "47.66%", - "hitVKills": 3.22, - "shotsHit": 3363, - "shotsFired": 17165, - "scopedKills": 1001, - "spawns": 172, - "timeEquipped": 16802 - }, - { - "type": "Assault Rifles", - "weaponName": "L85A3", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_L85A3_PKG_Factory_MED-9bd0deaa.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_L85A3_PKG_Factory_MED-9bd0deaa.webp", - "id": "ar_l85a3", - "kills": 785, - "damage": 16153, - "assistsDamage": 60, - "bodyKills": 315, - "headshotKills": 470, - "hipfireKills": 8, - "multiKills": 4, - "accuracy": "28.29%", - "killsPerMinute": 7.26, - "damagePerMinute": 149.47, - "headshots": "59.87%", - "hitVKills": 2.05, - "shotsHit": 1609, - "shotsFired": 5687, - "scopedKills": 777, - "spawns": 111, - "timeEquipped": 6484 - }, - { - "type": "Rifles", - "weaponName": "M2010 ESR", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_M2010ESR_PKG_Factory_MED-f94fdae6.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_M2010ESR_PKG_Factory_MED-f94fdae6.webp", - "id": "snp_m2010", - "kills": 553, - "damage": 53403, - "assistsDamage": 32, - "bodyKills": 150, - "headshotKills": 403, - "hipfireKills": 200, - "multiKills": 51, - "accuracy": "47.56%", - "killsPerMinute": 2.49, - "damagePerMinute": 240.36, - "headshots": "72.88%", - "hitVKills": 1.37, - "shotsHit": 760, - "shotsFired": 1598, - "scopedKills": 353, - "spawns": 81, - "timeEquipped": 13331 - }, - { - "type": "Shotguns", - "weaponName": "M1014", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_M1014_PKG_Factory_MED-e011854a.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_M1014_PKG_Factory_MED-e011854a.webp", - "id": "sg_m1014", - "kills": 142, - "damage": 15520, - "assistsDamage": 19, - "bodyKills": 127, - "headshotKills": 15, - "hipfireKills": 138, - "multiKills": 11, - "accuracy": "76.98%", - "killsPerMinute": 4.06, - "damagePerMinute": 444.27, - "headshots": "10.56%", - "hitVKills": 2.8, - "shotsHit": 398, - "shotsFired": 517, - "scopedKills": 4, - "spawns": 31, - "timeEquipped": 2096 - }, - { - "type": "Carbines", - "weaponName": "AK-205", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_AK205_PKG_Factory_MED-6d376081.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_AK205_PKG_Factory_MED-6d376081.webp", - "id": "crb_ak205", - "kills": 30, - "damage": 5519, - "assistsDamage": 29, - "bodyKills": 25, - "headshotKills": 5, - "hipfireKills": 6, - "multiKills": 0, - "accuracy": "12.01%", - "killsPerMinute": 0.76, - "damagePerMinute": 139.49, - "headshots": "16.67%", - "hitVKills": 12.8, - "shotsHit": 384, - "shotsFired": 3197, - "scopedKills": 24, - "spawns": 26, - "timeEquipped": 2374 - }, - { - "type": "DMRs", - "weaponName": "SVK-8.6", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_SVCh_PKG_Factory_MED-bb06d385.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_SVCh_PKG_Factory_MED-bb06d385.webp", - "id": "dmr_svk86", - "kills": 262, - "damage": 42653, - "assistsDamage": 95, - "bodyKills": 144, - "headshotKills": 118, - "hipfireKills": 2, - "multiKills": 36, - "accuracy": "33.32%", - "killsPerMinute": 1.31, - "damagePerMinute": 212.95, - "headshots": "45.04%", - "hitVKills": 3.19, - "shotsHit": 837, - "shotsFired": 2512, - "scopedKills": 260, - "spawns": 76, - "timeEquipped": 12018 - }, - { - "type": "SMG-PDWs", - "weaponName": "SGX", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_MPX_PKG_Factory_MED-e822f017.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_MPX_PKG_Factory_MED-e822f017.webp", - "id": "smg_sgx", - "kills": 9788, - "damage": 526470, - "assistsDamage": 7, - "bodyKills": 7110, - "headshotKills": 2678, - "hipfireKills": 3088, - "multiKills": 85, - "accuracy": "54.83%", - "killsPerMinute": 56.3, - "damagePerMinute": 3028.3, - "headshots": "27.36%", - "hitVKills": 2.37, - "shotsHit": 23240, - "shotsFired": 42387, - "scopedKills": 6700, - "spawns": 65, - "timeEquipped": 10431 - }, - { - "type": "DMRs", - "weaponName": "LMR27", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_ARADMR_PKG_Factory_MED-dfe224de.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_ARADMR_PKG_Factory_MED-dfe224de.webp", - "id": "dmr_lmr27", - "kills": 5, - "damage": 765, - "assistsDamage": 2, - "bodyKills": 5, - "headshotKills": 0, - "hipfireKills": 0, - "multiKills": 0, - "accuracy": "30.0%", - "killsPerMinute": 1.18, - "damagePerMinute": 180.0, - "headshots": "0.0%", - "hitVKills": 7.2, - "shotsHit": 36, - "shotsFired": 120, - "scopedKills": 5, - "spawns": 3, - "timeEquipped": 255 - }, - { - "type": "Carbines", - "weaponName": "QBZ-192", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_QBZ192_PKG_Factory_MED-dc0a546b.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_QBZ192_PKG_Factory_MED-dc0a546b.webp", - "id": "crb_qbz192", - "kills": 75, - "damage": 10219, - "assistsDamage": 52, - "bodyKills": 72, - "headshotKills": 3, - "hipfireKills": 4, - "multiKills": 7, - "accuracy": "12.36%", - "killsPerMinute": 1.08, - "damagePerMinute": 147.64, - "headshots": "4.0%", - "hitVKills": 3.83, - "shotsHit": 287, - "shotsFired": 2322, - "scopedKills": 71, - "spawns": 104, - "timeEquipped": 4153 - }, - { - "type": "Carbines", - "weaponName": "M417 A2", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_HK417A2_PKG_Factory_MED-494ffe6e.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_HK417A2_PKG_Factory_MED-494ffe6e.webp", - "id": "crb_m417a2", - "kills": 1942, - "damage": 52408, - "assistsDamage": 156, - "bodyKills": 638, - "headshotKills": 1304, - "hipfireKills": 103, - "multiKills": 54, - "accuracy": "24.49%", - "killsPerMinute": 6.87, - "damagePerMinute": 185.47, - "headshots": "67.15%", - "hitVKills": 1.78, - "shotsHit": 3464, - "shotsFired": 14143, - "scopedKills": 1839, - "spawns": 266, - "timeEquipped": 16954 - }, - { - "type": "Machine Guns", - "weaponName": "DRS-IAR", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_M27IAR_PKG_Factory_MED-ae6675cd.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_M27IAR_PKG_Factory_MED-ae6675cd.webp", - "id": "mg_drsiar", - "kills": 729, - "damage": 83389, - "assistsDamage": 45, - "bodyKills": 599, - "headshotKills": 130, - "hipfireKills": 115, - "multiKills": 61, - "accuracy": "28.88%", - "killsPerMinute": 5.56, - "damagePerMinute": 636.4, - "headshots": "17.83%", - "hitVKills": 4.49, - "shotsHit": 3270, - "shotsFired": 11323, - "scopedKills": 614, - "spawns": 77, - "timeEquipped": 7862 - }, - { - "type": "Assault Rifles", - "weaponName": "KORD 6P67", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_6P67_PKG_Factory_MED-827b9414.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_6P67_PKG_Factory_MED-827b9414.webp", - "id": "ar_kord6p67", - "kills": 502, - "damage": 64820, - "assistsDamage": 98, - "bodyKills": 429, - "headshotKills": 73, - "hipfireKills": 42, - "multiKills": 107, - "accuracy": "25.85%", - "killsPerMinute": 2.55, - "damagePerMinute": 328.9, - "headshots": "14.54%", - "hitVKills": 7.41, - "shotsHit": 3722, - "shotsFired": 14397, - "scopedKills": 460, - "spawns": 178, - "timeEquipped": 11825 - }, - { - "type": "SMG-PDWs", - "weaponName": "USG-90", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_P90_PKG_Factory_MED-2ab1db64.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_P90_PKG_Factory_MED-2ab1db64.webp", - "id": "smg_usg90", - "kills": 10, - "damage": 1217, - "assistsDamage": 4, - "bodyKills": 6, - "headshotKills": 4, - "hipfireKills": 3, - "multiKills": 1, - "accuracy": "16.58%", - "killsPerMinute": 0.75, - "damagePerMinute": 91.39, - "headshots": "40.0%", - "hitVKills": 6.6, - "shotsHit": 66, - "shotsFired": 398, - "scopedKills": 7, - "spawns": 0, - "timeEquipped": 799 - }, - { - "type": "Carbines", - "weaponName": "M4A1", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_M4A1_PKG_Factory_MED-34529a82.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_M4A1_PKG_Factory_MED-34529a82.webp", - "id": "crb_m4a1", - "kills": 2309, - "damage": 36071, - "assistsDamage": 141, - "bodyKills": 730, - "headshotKills": 1579, - "hipfireKills": 92, - "multiKills": 42, - "accuracy": "26.14%", - "killsPerMinute": 13.41, - "damagePerMinute": 209.53, - "headshots": "68.38%", - "hitVKills": 1.6, - "shotsHit": 3691, - "shotsFired": 14118, - "scopedKills": 2217, - "spawns": 199, - "timeEquipped": 10329 - }, - { - "type": "Machine Guns", - "weaponName": "KTS100 MK8", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_Ultimax_PKG_Factory_MED-a8ebb482.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_Ultimax_PKG_Factory_MED-a8ebb482.webp", - "id": "mg_kts100mk8", - "kills": 4524, - "damage": 25524, - "assistsDamage": 76, - "bodyKills": 1865, - "headshotKills": 2659, - "hipfireKills": 54, - "multiKills": 23, - "accuracy": "41.99%", - "killsPerMinute": 19.76, - "damagePerMinute": 111.48, - "headshots": "58.78%", - "hitVKills": 1.38, - "shotsHit": 6236, - "shotsFired": 14851, - "scopedKills": 4470, - "spawns": 88, - "timeEquipped": 13737 - }, - { - "type": "Pistols", - "weaponName": "M45A1", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_M45A1_PKG_Factory_MED-8c41691b.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_M45A1_PKG_Factory_MED-8c41691b.webp", - "id": "pst_m45a1", - "kills": 228, - "damage": 252, - "assistsDamage": 0, - "bodyKills": 30, - "headshotKills": 198, - "hipfireKills": 37, - "multiKills": 2, - "accuracy": "211.11%", - "killsPerMinute": 93.7, - "damagePerMinute": 103.56, - "headshots": "86.84%", - "hitVKills": 1.0, - "shotsHit": 228, - "shotsFired": 108, - "scopedKills": 191, - "spawns": 69, - "timeEquipped": 146 - }, - { - "type": "SMG-PDWs", - "weaponName": "KV9", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_Vector_PKG_Factory_MED-b5631ed7.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_Vector_PKG_Factory_MED-b5631ed7.webp", - "id": "smg_kv9", - "kills": 169, - "damage": 21081, - "assistsDamage": 83, - "bodyKills": 148, - "headshotKills": 21, - "hipfireKills": 58, - "multiKills": 18, - "accuracy": "16.2%", - "killsPerMinute": 1.42, - "damagePerMinute": 177.47, - "headshots": "12.43%", - "hitVKills": 5.8, - "shotsHit": 981, - "shotsFired": 6057, - "scopedKills": 111, - "spawns": 142, - "timeEquipped": 7127 - }, - { - "type": "Assault Rifles", - "weaponName": "SOR-556 Mk2", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_SCARL_PKG_Factory_MED-b44467bb.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_SCARL_PKG_Factory_MED-b44467bb.webp", - "id": "ar_sor556mk2", - "kills": 451, - "damage": 54559, - "assistsDamage": 175, - "bodyKills": 367, - "headshotKills": 84, - "hipfireKills": 23, - "multiKills": 47, - "accuracy": "20.04%", - "killsPerMinute": 2.27, - "damagePerMinute": 274.14, - "headshots": "18.63%", - "hitVKills": 4.89, - "shotsHit": 2205, - "shotsFired": 11002, - "scopedKills": 428, - "spawns": 139, - "timeEquipped": 11941 - }, - { - "type": "SMG-PDWs", - "weaponName": "PW7A2", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_MP7A2_PKG_Factory_MED-406bc965.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_MP7A2_PKG_Factory_MED-406bc965.webp", - "id": "smg_pw7a2", - "kills": 216, - "damage": 20576, - "assistsDamage": 15, - "bodyKills": 201, - "headshotKills": 15, - "hipfireKills": 75, - "multiKills": 54, - "accuracy": "26.43%", - "killsPerMinute": 5.13, - "damagePerMinute": 488.55, - "headshots": "6.94%", - "hitVKills": 6.2, - "shotsHit": 1339, - "shotsFired": 5066, - "scopedKills": 141, - "spawns": 4, - "timeEquipped": 2527 - }, - { - "type": "Machine Guns", - "weaponName": "M123K", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_MG4K_PKG_Factory_MED-cc064690.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_MG4K_PKG_Factory_MED-cc064690.webp", - "id": "mg_m123k", - "kills": 84, - "damage": 15303, - "assistsDamage": 40, - "bodyKills": 75, - "headshotKills": 9, - "hipfireKills": 22, - "multiKills": 8, - "accuracy": "12.66%", - "killsPerMinute": 1.03, - "damagePerMinute": 187.92, - "headshots": "10.71%", - "hitVKills": 11.15, - "shotsHit": 937, - "shotsFired": 7403, - "scopedKills": 62, - "spawns": 63, - "timeEquipped": 4886 - }, - { - "type": "Pistols", - "weaponName": "M44", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_RagingHunter_PKG_Factory_MED-f9773307.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_RagingHunter_PKG_Factory_MED-f9773307.webp", - "id": "pst_m44", - "kills": 18, - "damage": 4263, - "assistsDamage": 14, - "bodyKills": 12, - "headshotKills": 6, - "hipfireKills": 4, - "multiKills": 0, - "accuracy": "34.78%", - "killsPerMinute": 0.27, - "damagePerMinute": 63.98, - "headshots": "33.33%", - "hitVKills": 5.78, - "shotsHit": 104, - "shotsFired": 299, - "scopedKills": 14, - "spawns": 854, - "timeEquipped": 3998 - }, - { - "type": "Machine Guns", - "weaponName": "M250", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_M250_PKG_Factory_MED-6e230a71.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_M250_PKG_Factory_MED-6e230a71.webp", - "id": "mg_xm250", - "kills": 328, - "damage": 38530, - "assistsDamage": 90, - "bodyKills": 289, - "headshotKills": 39, - "hipfireKills": 27, - "multiKills": 58, - "accuracy": "18.11%", - "killsPerMinute": 2.33, - "damagePerMinute": 273.68, - "headshots": "11.89%", - "hitVKills": 4.3, - "shotsHit": 1412, - "shotsFired": 7796, - "scopedKills": 301, - "spawns": 166, - "timeEquipped": 8447 - }, - { - "type": "SMG-PDWs", - "weaponName": "UMG-40", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_UMP40_PKG_Factory_MED-22afa646.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_UMP40_PKG_Factory_MED-22afa646.webp", - "id": "smg_umg40", - "kills": 4, - "damage": 926, - "assistsDamage": 1, - "bodyKills": 4, - "headshotKills": 0, - "hipfireKills": 0, - "multiKills": 1, - "accuracy": "24.37%", - "killsPerMinute": 0.43, - "damagePerMinute": 98.51, - "headshots": "0.0%", - "hitVKills": 21.75, - "shotsHit": 87, - "shotsFired": 357, - "scopedKills": 4, - "spawns": 3, - "timeEquipped": 564 - }, - { - "type": "Assault Rifles", - "weaponName": "TR-7", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_Tavor7_PKG_Factory_MED-e682f267.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_Tavor7_PKG_Factory_MED-e682f267.webp", - "id": "ar_tr7", - "kills": 616, - "damage": 68498, - "assistsDamage": 107, - "bodyKills": 474, - "headshotKills": 142, - "hipfireKills": 143, - "multiKills": 55, - "accuracy": "16.89%", - "killsPerMinute": 2.46, - "damagePerMinute": 273.5, - "headshots": "23.05%", - "hitVKills": 3.68, - "shotsHit": 2268, - "shotsFired": 13428, - "scopedKills": 473, - "spawns": 252, - "timeEquipped": 15027 - }, - { - "type": "SMG-PDWs", - "weaponName": "SL9", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_APDW_PKG_Factory_MED-c4d1b829.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_APDW_PKG_Factory_MED-c4d1b829.webp", - "id": "smg_sl9", - "kills": 376, - "damage": 37358, - "assistsDamage": 17, - "bodyKills": 316, - "headshotKills": 60, - "hipfireKills": 19, - "multiKills": 77, - "accuracy": "21.84%", - "killsPerMinute": 4.86, - "damagePerMinute": 483.08, - "headshots": "15.96%", - "hitVKills": 4.85, - "shotsHit": 1824, - "shotsFired": 8350, - "scopedKills": 357, - "spawns": 25, - "timeEquipped": 4640 - }, - { - "type": "Machine Guns", - "weaponName": "M240L", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_M240L_PKG_Factory_MED-1fa18e0c.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_M240L_PKG_Factory_MED-1fa18e0c.webp", - "id": "mg_m240l", - "kills": 45, - "damage": 4029, - "assistsDamage": 0, - "bodyKills": 40, - "headshotKills": 5, - "hipfireKills": 3, - "multiKills": 3, - "accuracy": "31.3%", - "killsPerMinute": 7.03, - "damagePerMinute": 629.53, - "headshots": "11.11%", - "hitVKills": 3.31, - "shotsHit": 149, - "shotsFired": 476, - "scopedKills": 42, - "spawns": 1, - "timeEquipped": 384 - }, - { - "type": "SMG-PDWs", - "weaponName": "SCW-10", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_APC10_PKG_Factory_MED-716a97fb.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_APC10_PKG_Factory_MED-716a97fb.webp", - "id": "smg_scw10", - "kills": 571, - "damage": 61171, - "assistsDamage": 139, - "bodyKills": 495, - "headshotKills": 76, - "hipfireKills": 48, - "multiKills": 105, - "accuracy": "18.37%", - "killsPerMinute": 2.47, - "damagePerMinute": 264.68, - "headshots": "13.31%", - "hitVKills": 4.04, - "shotsHit": 2308, - "shotsFired": 12565, - "scopedKills": 523, - "spawns": 232, - "timeEquipped": 13867 - }, - { - "type": "Assault Rifles", - "weaponName": "NVO-228E", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_ACE32_PKG_Factory_MED-39a97220.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_ACE32_PKG_Factory_MED-39a97220.webp", - "id": "ar_nvo228e", - "kills": 960, - "damage": 61885, - "assistsDamage": 101, - "bodyKills": 611, - "headshotKills": 349, - "hipfireKills": 72, - "multiKills": 39, - "accuracy": "28.84%", - "killsPerMinute": 5.78, - "damagePerMinute": 372.69, - "headshots": "36.35%", - "hitVKills": 2.44, - "shotsHit": 2344, - "shotsFired": 8128, - "scopedKills": 888, - "spawns": 114, - "timeEquipped": 9963 - }, - { - "type": "Machine Guns", - "weaponName": "M/60", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_M60E6_PKG_Factory_MED-e600bb28.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_M60E6_PKG_Factory_MED-e600bb28.webp", - "id": "mg_m60", - "kills": 5, - "damage": 1191, - "assistsDamage": 5, - "bodyKills": 5, - "headshotKills": 0, - "hipfireKills": 0, - "multiKills": 1, - "accuracy": "6.74%", - "killsPerMinute": 0.47, - "damagePerMinute": 112.01, - "headshots": "0.0%", - "hitVKills": 11.8, - "shotsHit": 59, - "shotsFired": 876, - "scopedKills": 5, - "spawns": 1, - "timeEquipped": 638 - }, - { - "type": "Rifles", - "weaponName": "PSR", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_MRAD_PKG_Factory_MED-5035ce99.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_MRAD_PKG_Factory_MED-5035ce99.webp", - "id": "snp_psr", - "kills": 39, - "damage": 7457, - "assistsDamage": 11, - "bodyKills": 17, - "headshotKills": 22, - "hipfireKills": 22, - "multiKills": 0, - "accuracy": "30.75%", - "killsPerMinute": 0.49, - "damagePerMinute": 94.61, - "headshots": "56.41%", - "hitVKills": 3.56, - "shotsHit": 139, - "shotsFired": 452, - "scopedKills": 17, - "spawns": 9, - "timeEquipped": 4729 - }, - { - "type": "DMRs", - "weaponName": "SVDM", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_SVDM_PKG_Factory_MED-b6c9aa50.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_SVDM_PKG_Factory_MED-b6c9aa50.webp", - "id": "dmr_svdm", - "kills": 3, - "damage": 475, - "assistsDamage": 3, - "bodyKills": 1, - "headshotKills": 2, - "hipfireKills": 0, - "multiKills": 0, - "accuracy": "20.0%", - "killsPerMinute": 0.28, - "damagePerMinute": 44.88, - "headshots": "66.67%", - "hitVKills": 6.33, - "shotsHit": 19, - "shotsFired": 95, - "scopedKills": 3, - "spawns": 1, - "timeEquipped": 635 - }, - { - "type": "Assault Rifles", - "weaponName": "AK4D", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_G3A4_PKG_Factory_MED-0575cf00.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_G3A4_PKG_Factory_MED-0575cf00.webp", - "id": "ar_ak4d", - "kills": 155, - "damage": 17827, - "assistsDamage": 48, - "bodyKills": 147, - "headshotKills": 8, - "hipfireKills": 6, - "multiKills": 23, - "accuracy": "20.76%", - "killsPerMinute": 1.53, - "damagePerMinute": 176.24, - "headshots": "5.16%", - "hitVKills": 4.49, - "shotsHit": 696, - "shotsFired": 3353, - "scopedKills": 149, - "spawns": 80, - "timeEquipped": 6069 - }, - { - "type": "Carbines", - "weaponName": "SOR-300SC", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_SCARSC_PKG_Factory_MED-7a6a50ff.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_SCARSC_PKG_Factory_MED-7a6a50ff.webp", - "id": "crb_sor300sc", - "kills": 5, - "damage": 1016, - "assistsDamage": 4, - "bodyKills": 4, - "headshotKills": 1, - "hipfireKills": 0, - "multiKills": 0, - "accuracy": "12.99%", - "killsPerMinute": 0.24, - "damagePerMinute": 47.77, - "headshots": "20.0%", - "hitVKills": 20.0, - "shotsHit": 100, - "shotsFired": 770, - "scopedKills": 5, - "spawns": 0, - "timeEquipped": 1276 - }, - { - "type": "Carbines", - "weaponName": "SG 553R", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_SIG553R_PKG_Factory_MED-afc2dfa8.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_SIG553R_PKG_Factory_MED-afc2dfa8.webp", - "id": "crb_sg553r", - "kills": 4207, - "damage": 30073, - "assistsDamage": 119, - "bodyKills": 3204, - "headshotKills": 1003, - "hipfireKills": 1264, - "multiKills": 37, - "accuracy": "45.09%", - "killsPerMinute": 21.64, - "damagePerMinute": 154.71, - "headshots": "23.84%", - "hitVKills": 1.16, - "shotsHit": 4895, - "shotsFired": 10855, - "scopedKills": 2943, - "spawns": 200, - "timeEquipped": 11663 - }, - { - "type": "Carbines", - "weaponName": "GRT-BC", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_MSBSGROTB_PKG_Factory_MED-25acf006.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_MSBSGROTB_PKG_Factory_MED-25acf006.webp", - "id": "crb_grtbc", - "kills": 22, - "damage": 3216, - "assistsDamage": 20, - "bodyKills": 17, - "headshotKills": 5, - "hipfireKills": 7, - "multiKills": 1, - "accuracy": "12.16%", - "killsPerMinute": 0.76, - "damagePerMinute": 111.15, - "headshots": "22.73%", - "hitVKills": 7.95, - "shotsHit": 175, - "shotsFired": 1439, - "scopedKills": 15, - "spawns": 21, - "timeEquipped": 1736 - }, - { - "type": "Shotguns", - "weaponName": "18.5KS-K", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_185KSK_PKG_Factory_MED-432c353f.webp", - "altImage": "https://cdn.gametools.network/weapons/bf6/white/T_UI_MSBSGROTB_PKG_Factory_MED-25acf006.webp", - "id": "sg_185ksk", - "kills": 17, - "damage": 2390, - "assistsDamage": 9, - "bodyKills": 15, - "headshotKills": 2, - "hipfireKills": 17, - "multiKills": 1, - "accuracy": "22.83%", - "killsPerMinute": 0.87, - "damagePerMinute": 122.46, - "headshots": "11.76%", - "hitVKills": 2.94, - "shotsHit": 50, - "shotsFired": 219, - "scopedKills": 0, - "spawns": 30, - "timeEquipped": 1171 - }, - { - "type": "Pistols", - "weaponName": "ES 5.7", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_M18_PKG_Factory_MED-88261bf8.webp", - "id": "pst_es57", - "kills": 9183, - "damage": 565421, - "assistsDamage": 7, - "bodyKills": 3568, - "headshotKills": 5615, - "hipfireKills": 2930, - "multiKills": 60, - "accuracy": "105.3%", - "killsPerMinute": 51.52, - "damagePerMinute": 3172.07, - "headshots": "61.15%", - "hitVKills": 2.51, - "shotsHit": 23019, - "shotsFired": 21860, - "scopedKills": 6253, - "spawns": 715, - "timeEquipped": 10695 - }, - { - "type": "DMRs", - "weaponName": "M39 EMR", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_SVCh_PKG_Factory_MED-bb06d385.webp", - "id": "dmr_m39emr", - "kills": 0, - "damage": 0, - "assistsDamage": 0, - "bodyKills": 0, - "headshotKills": 0, - "hipfireKills": 0, - "multiKills": 0, - "accuracy": "0.0%", - "killsPerMinute": 0.0, - "damagePerMinute": 0.0, - "headshots": "0.0%", - "hitVKills": 0.0, - "shotsHit": 0, - "shotsFired": 0, - "scopedKills": 0, - "spawns": 0, - "timeEquipped": 45 - }, - { - "type": "Rifles", - "weaponName": "SV-98", - "image": "https://cdn.gametools.network/weapons/bf6/T_UI_M2010ESR_PKG_Factory_MED-f94fdae6.webp", - "id": "snp_sv98", - "kills": 2, - "damage": 334, - "assistsDamage": 1, - "bodyKills": 1, - "headshotKills": 1, - "hipfireKills": 1, - "multiKills": 0, - "accuracy": "25.93%", - "killsPerMinute": 0.3, - "damagePerMinute": 50.1, - "headshots": "50.0%", - "hitVKills": 3.5, - "shotsHit": 7, - "shotsFired": 27, - "scopedKills": 1, - "spawns": 1, - "timeEquipped": 400 - } - ], - "vehicles": [ - { - "type": "Air Combat", - "vehicleName": "Panthera KHT", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_MDV_Eurocopter_VSD0001-8003028d.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_MDV_Eurocopter_VSD0001-8003028d.webp", - "id": "air_panthera", - "kills": 166, - "killsPerMinute": 7.07, - "damage": 27206, - "spawns": 6, - "roadKills": 7, - "passengerAssists": 13, - "multiKills": 5, - "distanceTraveled": 50779, - "driverAssists": 1, - "vehiclesDestroyedWith": 7, - "assists": 14, - "damageTo": 3918, - "destroyed": 0, - "timeIn": 1408 - }, - { - "type": "Air Combat", - "vehicleName": "M77E Falchion", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_MDV_AH64E_VSD0001-dd0a7df6.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_MDV_AH64E_VSD0001-dd0a7df6.webp", - "id": "air_m77efalchio", - "kills": 0, - "killsPerMinute": 0, - "damage": 0, - "spawns": 0, - "roadKills": 0, - "passengerAssists": 0, - "multiKills": 0, - "distanceTraveled": 0, - "driverAssists": 0, - "vehiclesDestroyedWith": 0, - "assists": 0, - "damageTo": 0, - "destroyed": 0, - "timeIn": 0 - }, - { - "type": "Ground Combat", - "vehicleName": "Leo A4", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_MDV_Leopard_VSD0001-f8da51ee.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_MDV_Leopard_VSD0001-f8da51ee.webp", - "id": "sur_leoa4", - "kills": 22, - "killsPerMinute": 0.74, - "damage": 19307, - "spawns": 8, - "roadKills": 1, - "passengerAssists": 1, - "multiKills": 2, - "distanceTraveled": 6115, - "driverAssists": 13, - "vehiclesDestroyedWith": 1, - "assists": 14, - "damageTo": 43760, - "destroyed": 6, - "timeIn": 1789 - }, - { - "type": "Ground Combat", - "vehicleName": "Strf 09 A4", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_CV90_VSD0001-acd942b6.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_CV90_VSD0001-acd942b6.webp", - "id": "sur_strf09a4", - "kills": 140, - "killsPerMinute": 1.76, - "damage": 25699, - "spawns": 196, - "roadKills": 0, - "passengerAssists": 52, - "multiKills": 27, - "distanceTraveled": 12701, - "driverAssists": 41, - "vehiclesDestroyedWith": 2, - "assists": 93, - "damageTo": 20875, - "destroyed": 1, - "timeIn": 4770 - }, - { - "type": "Ground Combat", - "vehicleName": "M1A2 SEPv3", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_MDV_Abrams_VSD0001-5412a78d.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_MDV_Abrams_VSD0001-5412a78d.webp", - "id": "sur_m1a2sepv3", - "kills": 236, - "killsPerMinute": 1.54, - "damage": 67333, - "spawns": 46, - "roadKills": 0, - "passengerAssists": 164, - "multiKills": 32, - "distanceTraveled": 19222, - "driverAssists": 102, - "vehiclesDestroyedWith": 6, - "assists": 266, - "damageTo": 50600, - "destroyed": 9, - "timeIn": 9195 - }, - { - "type": "Ground Combat", - "vehicleName": "Cheetah 1A2", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_MDV_Gepard_VSD0001-d796732f.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_MDV_Gepard_VSD0001-d796732f.webp", - "id": "sur_cheetah1a2", - "kills": 0, - "killsPerMinute": 0.0, - "damage": 1521, - "spawns": 1, - "roadKills": 0, - "passengerAssists": 0, - "multiKills": 0, - "distanceTraveled": 737, - "driverAssists": 0, - "vehiclesDestroyedWith": 0, - "assists": 0, - "damageTo": 9876, - "destroyed": 0, - "timeIn": 139 - }, - { - "type": "Ground Combat", - "vehicleName": "Glider 96", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_MDV_Flyer60_VSD0005-1569869f.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_MDV_Flyer60_VSD0005-1569869f.webp", - "id": "sur_glider96", - "kills": 6, - "killsPerMinute": 0.28, - "damage": 1648, - "spawns": 7, - "roadKills": 1, - "passengerAssists": 0, - "multiKills": 1, - "distanceTraveled": 9884, - "driverAssists": 0, - "vehiclesDestroyedWith": 0, - "assists": 0, - "damageTo": 14447, - "destroyed": 0, - "timeIn": 1298 - }, - { - "type": "Ground Combat", - "vehicleName": "M3A3 Bradley", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_OB_VEH_Tank_Bradley_VSD0001_Dressing-66f252ca.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_OB_VEH_Tank_Bradley_VSD0001_Dressing-66f252ca.webp", - "id": "sur_bradley", - "kills": 82, - "killsPerMinute": 1.15, - "damage": 16995, - "spawns": 59, - "roadKills": 0, - "passengerAssists": 60, - "multiKills": 12, - "distanceTraveled": 14396, - "driverAssists": 14, - "vehiclesDestroyedWith": 2, - "assists": 74, - "damageTo": 30066, - "destroyed": 11, - "timeIn": 4296 - }, - { - "type": "Air Combat", - "vehicleName": "Su-57", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_MDV_SU57_VSD0001-1b5aa5ee.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_MDV_SU57_VSD0001-1b5aa5ee.webp", - "id": "air_su57", - "kills": 0, - "killsPerMinute": 0.0, - "damage": 204, - "spawns": 3, - "roadKills": 0, - "passengerAssists": 0, - "multiKills": 0, - "distanceTraveled": 13458, - "driverAssists": 0, - "vehiclesDestroyedWith": 0, - "assists": 0, - "damageTo": 1091, - "destroyed": 0, - "timeIn": 150 - }, - { - "type": "Air Combat", - "vehicleName": "F-61V", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_MDV_F16_VSD0001-5f951ec9.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_MDV_F16_VSD0001-5f951ec9.webp", - "id": "air_f61v", - "kills": 26, - "killsPerMinute": 4.53, - "damage": 6870, - "spawns": 4, - "roadKills": 26, - "passengerAssists": 0, - "multiKills": 1, - "distanceTraveled": 33186, - "driverAssists": 0, - "vehiclesDestroyedWith": 0, - "assists": 0, - "damageTo": 204, - "destroyed": 0, - "timeIn": 344 - }, - { - "type": "Air Combat", - "vehicleName": "F-39E", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_MDV_JAS39_VSD0001-9313d717.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_MDV_JAS39_VSD0001-9313d717.webp", - "id": "air_f39e", - "kills": 16, - "killsPerMinute": 5.36, - "damage": 3016, - "spawns": 0, - "roadKills": 6, - "passengerAssists": 0, - "multiKills": 4, - "distanceTraveled": 14990, - "driverAssists": 0, - "vehiclesDestroyedWith": 0, - "assists": 0, - "damageTo": 6196, - "destroyed": 1, - "timeIn": 179 - }, - { - "type": "Air Combat", - "vehicleName": "M77E Falchion", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_MDV_AH64E_VSD0001-dd0a7df6.webp", - "altImage": "https://cdn.gametools.network/vehicles/bf6/white/T_UI_MDV_AH64E_VSD0001-dd0a7df6.webp", - "id": "air_m77efalchion", - "kills": 4, - "killsPerMinute": 0.62, - "damage": 3246, - "spawns": 7, - "roadKills": 0, - "passengerAssists": 0, - "multiKills": 0, - "distanceTraveled": 14466, - "driverAssists": 0, - "vehiclesDestroyedWith": 0, - "assists": 0, - "damageTo": 6151, - "destroyed": 4, - "timeIn": 390 - }, - { - "type": "Ground Transport", - "vehicleName": "VECTOR", - "image": "https://cdn.gametools.network/vehicles/bf6/T_UI_MDV_Vector_VSD0002-241efa80.webp", - "id": "sur_vector", - "kills": 0, - "killsPerMinute": 0.0, - "damage": 3, - "spawns": 1, - "roadKills": 0, - "passengerAssists": 0, - "multiKills": 0, - "distanceTraveled": 1496, - "driverAssists": 0, - "vehiclesDestroyedWith": 0, - "assists": 0, - "damageTo": 1525, - "destroyed": 2, - "timeIn": 169 - } - ], - "weaponGroups": [ - { - "groupName": "Rifles", - "id": "snp", - "kills": 1317, - "damage": 134277, - "assistsDamage": 86, - "bodyKills": 524, - "headshotKills": 793, - "hipfireKills": 255, - "multiKills": 70, - "accuracy": "52.64%", - "killsPerMinute": 2.88, - "damagePerMinute": 293.22, - "headshots": "60.21%", - "hitVKills": 1.42, - "shotsHit": 1866, - "shotsFired": 3545, - "scopedKills": 1062, - "spawns": 190, - "timeEquipped": 27476 - }, - { - "groupName": "Carbines", - "id": "crb", - "kills": 9010, - "damage": 191129, - "assistsDamage": 695, - "bodyKills": 4999, - "headshotKills": 4011, - "hipfireKills": 1493, - "multiKills": 179, - "accuracy": "25.76%", - "killsPerMinute": 8.7, - "damagePerMinute": 184.63, - "headshots": "44.52%", - "hitVKills": 1.64, - "shotsHit": 14809, - "shotsFired": 57493, - "scopedKills": 7517, - "spawns": 1054, - "timeEquipped": 62113 - }, - { - "groupName": "Machine Guns", - "id": "mg", - "kills": 5878, - "damage": 200011, - "assistsDamage": 313, - "bodyKills": 3015, - "headshotKills": 2863, - "hipfireKills": 228, - "multiKills": 175, - "accuracy": "25.61%", - "killsPerMinute": 7.82, - "damagePerMinute": 266.14, - "headshots": "48.71%", - "hitVKills": 2.35, - "shotsHit": 13838, - "shotsFired": 54035, - "scopedKills": 5650, - "spawns": 436, - "timeEquipped": 45092 - }, - { - "groupName": "Shotguns", - "id": "sg", - "kills": 510, - "damage": 40588, - "assistsDamage": 100, - "bodyKills": 308, - "headshotKills": 202, - "hipfireKills": 277, - "multiKills": 43, - "accuracy": "75.94%", - "killsPerMinute": 2.77, - "damagePerMinute": 220.33, - "headshots": "39.61%", - "hitVKills": 2.17, - "shotsHit": 1108, - "shotsFired": 1459, - "scopedKills": 233, - "spawns": 210, - "timeEquipped": 11053 - }, - { - "groupName": "Assault Rifles", - "id": "ar", - "kills": 5121, - "damage": 403701, - "assistsDamage": 1014, - "bodyKills": 3416, - "headshotKills": 1705, - "hipfireKills": 434, - "multiKills": 377, - "accuracy": "20.04%", - "killsPerMinute": 3.09, - "damagePerMinute": 243.61, - "headshots": "33.29%", - "hitVKills": 3.74, - "shotsHit": 19146, - "shotsFired": 95562, - "scopedKills": 4687, - "spawns": 1436, - "timeEquipped": 99429 - }, - { - "groupName": "SMG-PDWs", - "id": "smg", - "kills": 11141, - "damage": 670361, - "assistsDamage": 267, - "bodyKills": 8287, - "headshotKills": 2854, - "hipfireKills": 3292, - "multiKills": 341, - "accuracy": "39.51%", - "killsPerMinute": 16.36, - "damagePerMinute": 984.26, - "headshots": "25.62%", - "hitVKills": 2.69, - "shotsHit": 29976, - "shotsFired": 75870, - "scopedKills": 7849, - "spawns": 471, - "timeEquipped": 40865 - }, - { - "groupName": "DMRs", - "id": "dmr", - "kills": 270, - "damage": 43893, - "assistsDamage": 100, - "bodyKills": 150, - "headshotKills": 120, - "hipfireKills": 2, - "multiKills": 36, - "accuracy": "32.71%", - "killsPerMinute": 1.25, - "damagePerMinute": 203.32, - "headshots": "44.44%", - "hitVKills": 3.3, - "shotsHit": 892, - "shotsFired": 2727, - "scopedKills": 268, - "spawns": 80, - "timeEquipped": 12953 - } - ], - "vehicleGroups": [ - { - "groupName": "Air Combat", - "id": "air", - "kills": 228, - "killsPerMinute": 3.74, - "damage": 52741, - "spawns": 32, - "roadKills": 43, - "passengerAssists": 13, - "multiKills": 12, - "distanceTraveled": 187925, - "driverAssists": 7, - "vehiclesDestroyedWith": 9, - "assists": 20, - "damageTo": 37134, - "destroyed": 14, - "timeIn": 3653 - }, - { - "groupName": "Ground Combat", - "id": "sur", - "kills": 486, - "killsPerMinute": 1.33, - "damage": 132612, - "spawns": 326, - "roadKills": 2, - "passengerAssists": 277, - "multiKills": 74, - "distanceTraveled": 66653, - "driverAssists": 170, - "vehiclesDestroyedWith": 11, - "assists": 447, - "damageTo": 175787, - "destroyed": 31, - "timeIn": 21931 - } - ], - "classes": [ - { - "className": "Assault", - "image": "https://cdn.gametools.network/classes/bf6/white/Assault.svg", - "altImage": "https://cdn.gametools.network/classes/bf6/black/Assault.svg", - "id": "assault", - "kills": 3691, - "deaths": 1168, - "kpm": 1.65, - "killDeath": 3.16, - "spawns": 1276, - "score": 938610, - "assists": 1501, - "secondsPlayed": 134495 - }, - { - "className": "Engineer", - "image": "https://cdn.gametools.network/classes/bf6/white/Engineer.svg", - "altImage": "https://cdn.gametools.network/classes/bf6/black/Engineer.svg", - "id": "engineer", - "kills": 6123, - "deaths": 266, - "kpm": 11.4, - "killDeath": 23.02, - "spawns": 301, - "score": 192225, - "assists": 523, - "secondsPlayed": 32218 - }, - { - "className": "Support", - "image": "https://cdn.gametools.network/classes/bf6/white/Support.svg", - "altImage": "https://cdn.gametools.network/classes/bf6/black/Support.svg", - "id": "support", - "kills": 27896, - "deaths": 1998, - "kpm": 7.82, - "killDeath": 13.96, - "spawns": 2208, - "score": 1790650, - "assists": 2667, - "secondsPlayed": 214172 - }, - { - "className": "Recon", - "image": "https://cdn.gametools.network/classes/bf6/white/Recon.svg", - "altImage": "https://cdn.gametools.network/classes/bf6/black/Recon.svg", - "id": "recon", - "kills": 8163, - "deaths": 304, - "kpm": 9.02, - "killDeath": 26.85, - "spawns": 348, - "score": 345815, - "assists": 954, - "secondsPlayed": 54308 - } - ], - "maps": [ - { - "mapName": "Siege of Cairo", - "image": "https://cdn.gametools.network/maps/bf6/T_UI_Abbasid_Large_OPT-49a3761a.webp", - "id": "mpabbasid", - "wins": 48, - "losses": 29, - "matches": 77, - "winPercent": "62.34%", - "secondsPlayed": 108122 - }, - { - "mapName": "Empire State", - "image": "https://cdn.gametools.network/maps/bf6/T_UI_Aftermath_Large_OPT-bf883df1.webp", - "id": "mpaftermath", - "wins": 39, - "losses": 16, - "matches": 55, - "winPercent": "70.91%", - "secondsPlayed": 63995 - }, - { - "mapName": "Iberian Offensive", - "image": "https://cdn.gametools.network/maps/bf6/T_UI_Battery_Large_OPT-034d4636.webp", - "id": "mpbattery", - "wins": 15, - "losses": 8, - "matches": 23, - "winPercent": "65.22%", - "secondsPlayed": 19596 - }, - { - "mapName": "Liberation Peak", - "image": "https://cdn.gametools.network/maps/bf6/T_UI_Capstone_Large_OPT-2ccae694.webp", - "id": "mpcapstone", - "wins": 27, - "losses": 14, - "matches": 41, - "winPercent": "65.85%", - "secondsPlayed": 56559 - }, - { - "mapName": "Manhattan Bridge", - "image": "https://cdn.gametools.network/maps/bf6/T_UI_Dumbo_Large_OPT-20de031f.webp", - "id": "mpdumbo", - "wins": 20, - "losses": 9, - "matches": 29, - "winPercent": "68.97%", - "secondsPlayed": 33388 - }, - { - "mapName": "Operation Firestorm", - "image": "https://cdn.gametools.network/maps/bf6/T_UI_Firestorm_Large_OPT-45d582ad.webp", - "id": "mpfirestorm", - "wins": 5, - "losses": 3, - "matches": 8, - "winPercent": "62.5%", - "secondsPlayed": 10892 - }, - { - "mapName": "Saints Quarter", - "image": "https://cdn.gametools.network/maps/bf6/T_UI_Limestone_Large_OPT-c9160897.webp", - "id": "mplimestone", - "wins": 34, - "losses": 10, - "matches": 44, - "winPercent": "77.27%", - "secondsPlayed": 23532 - }, - { - "mapName": "New Sobek City", - "image": "https://cdn.gametools.network/maps/bf6/T_UI_Outskirts_Large_OPT-bf08f756.webp", - "id": "mpoutskirts", - "wins": 16, - "losses": 7, - "matches": 23, - "winPercent": "69.57%", - "secondsPlayed": 37590 - }, - { - "mapName": "Mirak Valley", - "image": "https://cdn.gametools.network/maps/bf6/T_UI_Tungsten_Large_OPT-935da06b.webp", - "id": "mptungsten", - "wins": 10, - "losses": 4, - "matches": 14, - "winPercent": "71.43%", - "secondsPlayed": 20429 - }, - { - "mapName": "Blackwell Fields", - "image": "https://cdn.gametools.network/maps/bf6/Battlefield_6_Blackwell_Fields.webp", - "id": "mpbadlands", - "wins": 3, - "losses": 2, - "matches": 5, - "winPercent": "60.0%", - "secondsPlayed": 7833 - }, - { - "mapName": "REDSEC", - "image": "https://cdn.gametools.network/maps/bf6/Battlefield_6_Redsec.webp", - "id": "ftpgranite", - "wins": 25, - "losses": 118, - "matches": 143, - "winPercent": "17.48%", - "secondsPlayed": 142037 - } - ], - "gadgets": [ - { - "type": "Strike Packages", - "gadgetName": "Air Strike", - "image": "https://cdn.gametools.network/gadgets/bf6/T_UI_CALLINS_Airstrike_Thumb-638b4ee1.png", - "id": "callin_airstrike", - "kills": 0, - "assistsDamage": 0, - "assists": 0, - "spawns": 0, - "damage": 0, - "uses": 33, - "multiKills": 0, - "vehiclesDestroyedWith": 0, - "kpm": 0.0, - "dpm": 0.0, - "secondsPlayed": 703 - } - ], - "redsec": [ - { - "seasonId": "Season1", - "season": "Season 1", - "modes": [ - { - "modeId": "GraniteDuo0", - "mode": "Duos", - "matches": 1, - "wins": 1, - "losses": 18, - "kills": 42, - "deaths": 28, - "killDeath": 1.5, - "score": 55475, - "secondsPlayed": 13274, - "timePlayed": "3:41:14", - "extrActions": 0 - }, - { - "modeId": "GraniteSquad0", - "mode": "Quads", - "matches": 29, - "wins": 20, - "losses": 9, - "kills": 449, - "deaths": 165, - "killDeath": 2.72, - "score": 736765, - "secondsPlayed": 112415, - "timePlayed": "1 day, 7:13:35", - "extrActions": 2 - }, - { - "modeId": "GraniteGauntlet0", - "mode": "Gauntlet", - "matches": 5, - "wins": 4, - "losses": 1, - "kills": 200, - "deaths": 118, - "killDeath": 1.69, - "score": 167560, - "secondsPlayed": 16196, - "timePlayed": "4:29:56", - "extrActions": 6 - } - ] - } - ], - "bestClass": "Support", - "humanPrecentage": "13.64%", - "kills": 45873, - "deaths": 3736, - "wins": 244, - "loses": 112, - "killsPerMinute": 3.7, - "damagePerMinute": 0.0, - "killsPerMatch": 127.78, - "damagePerMatch": 0.0, - "headShots": 19649, - "winPercent": "68.54%", - "headshots": "42.83%", - "killDeath": 12.28, - "infantryKillDeath": 1.67, - "damage": 0, - "timePlayed": "8 days, 14:37:41", - "accuracy": "40.17%", - "revives": 1345, - "heals": 30606, - "resupplies": 4979, - "repairs": 7925, - "squadmateRevive": 529, - "thrownThrowables": 319, - "inRound": { - "revives": 122, - "resupplies": 138, - "spotAssists": 62, - "thrownThrowables": 37, - "playerTakeDowns": 5 - }, - "gadgetsDestoyed": 991, - "playerTakeDowns": 55, - "matchesPlayed": 359, - "secondsPlayed": 743861, - "dividedSecondsPlayed": { - "flying": 2021, - "driving": 11974 - }, - "saviorKills": 2015, - "shotsFired": 348851, - "shotsHit": 140150, - "killAssists": 6083, - "vehiclesDestroyed": 45, - "enemiesSpotted": 8040, - "dividedKills": { - "ads": 35149, - "grenades": 144, - "hipfire": 9044, - "longDistance": 695, - "melee": 76, - "multiKills": 1482, - "passenger": 377, - "vehicle": 739, - "roadkills": 45, - "human": 6255, - "weapons": { - "SMG": 11141, - "LMG": 0, - "DMR": 270, - "Shotguns": 510, - "Assault Rifles": 510 - }, - "inRound": { - "total": 4935, - "grenade": 24, - "headshots": 3824, - "melee": 34, - "multiKills": 157, - "weapons": { - "SMG": 2685, - "AR": 1600, - "DMR": 117 - } - } - }, - "devidedDamage": { - "passenger": 65107, - "vehicleDriver": 129750, - "toVehicle": 212921, - "inRound": { - "asVehicle": 33412 - } - }, - "devidedAssists": { - "driver": 177, - "passenger": 290, - "spot": 1283, - "pilot": 177, - "inRound": { - "total": 113 - } - }, - "distanceTraveled": { - "foot": 857640, - "passenger": 358029, - "vehicle": 565509 - }, - "sector": { - "captured": 366 - }, - "objective": { - "time": { - "total": 62374, - "attacked": 19898, - "defended": 32446 - }, - "armed": 128, - "captured": 296, - "neutralized": 187, - "defused": 34, - "destroyed": 59, - "inRound": { - "armed": 26, - "captured": 8, - "neutralized": 9, - "defused": 27, - "destroyed": 8 - } - }, - "XP": [ - { - "total": 15253700, - "performance": 6681800, - "accolades": 3311400 - } - ] -} - - -async def build_card(): - # logger.info(f"结果{play_stat}") - weapon, vehicle = await get_best_weapon_and_best_vehicle(play_stat) - pid = play_stat['id'] - kd = play_stat['killDeath'] - kpm = play_stat['killsPerMinute'] - acc = play_stat['accuracy'] - head_shots = play_stat['headshots'] - time_play = 100 - kills = int(play_stat['kills']) - kill_assists = int(play_stat['killAssists']) - revives = int(play_stat['revives']) - wins = int(play_stat['wins']) - loses = int(play_stat['loses']) - best_weapon = weapon - best_vehicle = vehicle - best_class = play_stat['bestClass'] - captured = play_stat['objective']['captured'] - score = sum(item.get("score", 0) for item in play_stat['classes']) - repairs = play_stat['repairs'] - img = await build_bf6_stats_card(game='bf6', - player='Sansorano_Yume', - pid=pid, - kd=kd, - kpm=1.11, - spm=256.3, - acc=acc, - head_shots="18.96%", - rank=110, - time_play=time_play, - kills=kills, - kill_assists=kill_assists, - revives=revives, - repairs=repairs, - captured=captured, - score=score, - wins=wins, - loses=loses, - destroyed=120, - best_weapon=best_weapon, - best_vehicle=best_vehicle, - best_class=best_class) - tmimg = Image.open(img) - tmimg.show() - - -if __name__ == "__main__": - asyncio.run(fetch_tracker_search( - "https://api.tracker.gg/api/v2/bf6/standard/search?platform=origin&query=ABrokenWill&autocomplete=true", - "D:/QQ Bot/BF_BOT/src/plugins/nonebot_plugin_bf_bot/cookies/tracker.txt")) diff --git a/hexi/plugins/nonebot_plugin_brash_general_supercredits_tools/__init__.py b/hexi/plugins/nonebot_plugin_brash_general_supercredits_tools/__init__.py index e69de29..521a741 100644 --- a/hexi/plugins/nonebot_plugin_brash_general_supercredits_tools/__init__.py +++ b/hexi/plugins/nonebot_plugin_brash_general_supercredits_tools/__init__.py @@ -0,0 +1,15 @@ +"""brash_general_supercredits_tools — 未完成插件(已停用)。 + +原作者未完成的「超级积分查询」插件,当前为占位/空壳: +- __init__.py 原为空文件,无任何 matcher / 配置注册。 +- 保留 services/、db/ 空目录供后续实现。 + +⚠️ 本插件处于**禁用**状态:整个文件仅含注释,NoneBot 加载后不注册任何指令。 +后续如恢复实现,请按《插件结构标准》/《插件配置标准》补齐 handlers/services/utils 与 config.py。 +""" + +# ============================================================ +# 尚未实现。 +# 原项目仅保留了空目录(db/, services/),没有可用逻辑。 +# 如要启用,请在此处编写 matcher、服务层与配置注册,并删除下方注释头说明。 +# ============================================================ diff --git a/hexi/plugins/nonebot_plugin_dailywife/__init__.py b/hexi/plugins/nonebot_plugin_dailywife/__init__.py index 5148883..408b811 100644 --- a/hexi/plugins/nonebot_plugin_dailywife/__init__.py +++ b/hexi/plugins/nonebot_plugin_dailywife/__init__.py @@ -1,17 +1,6 @@ -import base64 -import datetime -import hashlib -import json -import os -from random import choice -from tkinter import Image +"""今日老婆 —— 入口(元数据 + 依赖)。""" -from PIL import * -from .utils import * - -import httpx -from nonebot import on_command, logger -from nonebot.adapters.onebot.v11 import MessageEvent, Bot, MessageSegment +from nonebot import on_command from nonebot.plugin import PluginMetadata __plugin_meta__ = PluginMetadata( @@ -21,106 +10,4 @@ __plugin_meta__ = PluginMetadata( type="application", ) -wife = on_command("今日老婆", aliases={"今日老婆"}) - - -def get_member_list(all_list): - id_list = [] - for member_list in all_list: - id_list.append(member_list['user_id']) - return id_list - - -async def download_avatar(user_id: str) -> bytes: - url = f"http://q1.qlogo.cn/g?b=qq&nk={user_id}&s=640" - data = await download_url(url) - if not data or hashlib.md5(data).hexdigest() == "acef72340ac0e914090bd35799f5594e": - url = f"http://q1.qlogo.cn/g?b=qq&nk={user_id}&s=100" - data = await download_url(url) - return data - - -async def download_url(url: str) -> bytes: - async with httpx.AsyncClient() as client: - for i in range(3): - try: - resp = await client.get(url) - if resp.status_code != 200: - continue - return resp.content - except Exception as e: - logger.error(f"Error downloading {url}, retry {i}/3: {str(e)}") - - -async def get_wife_info(member_info, qq_id): - img = await download_avatar(qq_id) - avatar = Image.open(BytesIO(img)).convert('RGBA') - avatar = png_resize(avatar, new_width=145, new_height=145) - - b_io = BytesIO() - avatar.save(b_io, format="PNG") - avatar_str = 'base64://' + base64.b64encode(b_io.getvalue()).decode() - member_name = (member_info["card"] or member_info["nickname"]) - msg = (MessageSegment.text('你今天的群友老婆是:'), MessageSegment.image(avatar_str), - MessageSegment.text(f'{member_name}({qq_id})')) - return msg - - -def load_group_config(group_id: str) -> int: - filename = os.path.join(os.path.dirname(__file__), 'config', f'{group_id}.json') - try: - with open(filename, encoding='utf8') as f: - config = json.load(f) - return config - except: - return None - - -def write_group_config(group_id: str, link_id: str, wife_id: str, date: str, config) -> int: - config_file = os.path.join(os.path.dirname(__file__), 'config', f'{group_id}.json') - if config is not None: - config[link_id] = [wife_id, date] - else: - config = {link_id: [wife_id, date]} - with open(config_file, 'w', encoding='utf-8') as f: - json.dump(config, f, ensure_ascii=False) - - -@wife.handle() -async def wife_handle(bot: Bot, ev: MessageEvent): - group_id = ev.group_id - user_id = ev.user_id - bot_id = ev.self_id - wife_id = None - today = str(datetime.date.today()) - config = load_group_config(group_id) - - # if priv.check_priv(ev, priv.SUPERUSER): - # wife_id = bot_id - if config is not None: - if str(user_id) in list(config): - if config[str(user_id)][1] == today: - wife_id = config[str(user_id)][0] - else: - del config[str(user_id)] - - if wife_id is None: - all_list = await bot.get_group_member_list(group_id=group_id) - id_list = get_member_list(all_list) - id_list.remove(bot_id) - id_list.remove(user_id) - if config is not None: - for record_id in list(config): - if config[record_id][1] != today: - del config[record_id] - else: - try: - id_list.remove(int(config[record_id][0])) - except: - del config[record_id] - wife_id = choice(id_list) - - write_group_config(group_id, user_id, wife_id, today, config) - member_info = await bot.get_group_member_info(group_id=group_id, user_id=wife_id) - result = await get_wife_info(member_info, wife_id) - await bot.send(ev, result, at_sender=True) +from .handlers import wife # noqa: E402,F401 diff --git a/hexi/plugins/nonebot_plugin_dailywife/handlers/__init__.py b/hexi/plugins/nonebot_plugin_dailywife/handlers/__init__.py new file mode 100644 index 0000000..bce7c4e --- /dev/null +++ b/hexi/plugins/nonebot_plugin_dailywife/handlers/__init__.py @@ -0,0 +1,3 @@ +"""今日老婆 —— Trigger 层。""" + +from .wife import wife # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_dailywife/handlers/wife.py b/hexi/plugins/nonebot_plugin_dailywife/handlers/wife.py new file mode 100644 index 0000000..2e67996 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_dailywife/handlers/wife.py @@ -0,0 +1,78 @@ +"""今日老婆 —— 触发器(Trigger + View)层。""" + +from __future__ import annotations + +import base64 +import datetime +from io import BytesIO +from random import choice + +from nonebot import on_command +from nonebot.adapters.onebot.v11 import MessageEvent, Bot, MessageSegment +from nonebot.plugin import PluginMetadata +from PIL import Image + +from ..services.store import get_member_list, load_group_config, write_group_config +from ..utils import download_avatar, png_resize + +__plugin_meta__ = PluginMetadata( + name="今日老婆", + description="随机抓取群友作为老婆", + usage="发送【今日老婆】", + type="application", +) + +wife = on_command("今日老婆", aliases={"今日老婆"}) + + +async def get_wife_info(member_info, qq_id): + img = await download_avatar(qq_id) + avatar = Image.open(BytesIO(img)).convert("RGBA") + avatar = png_resize(avatar, new_width=145, new_height=145) + b_io = BytesIO() + avatar.save(b_io, format="PNG") + avatar_str = "base64://" + base64.b64encode(b_io.getvalue()).decode() + member_name = member_info["card"] or member_info["nickname"] + return ( + MessageSegment.text("你今天的群友老婆是:"), + MessageSegment.image(avatar_str), + MessageSegment.text(f"{member_name}({qq_id})"), + ) + + +@wife.handle() +async def wife_handle(bot: Bot, ev: MessageEvent): + group_id = ev.group_id + user_id = ev.user_id + bot_id = ev.self_id + wife_id = None + today = str(datetime.date.today()) + config = load_group_config(group_id) + + if config is not None: + if str(user_id) in list(config): + if config[str(user_id)][1] == today: + wife_id = config[str(user_id)][0] + else: + del config[str(user_id)] + + if wife_id is None: + all_list = await bot.get_group_member_list(group_id=group_id) + id_list = get_member_list(all_list) + id_list.remove(bot_id) + id_list.remove(user_id) + if config is not None: + for record_id in list(config): + if config[record_id][1] != today: + del config[record_id] + else: + try: + id_list.remove(int(config[record_id][0])) + except Exception: + del config[record_id] + wife_id = choice(id_list) + + write_group_config(group_id, user_id, wife_id, today, config) + member_info = await bot.get_group_member_info(group_id=group_id, user_id=wife_id) + result = await get_wife_info(member_info, wife_id) + await bot.send(ev, result, at_sender=True) diff --git a/hexi/plugins/nonebot_plugin_dailywife/services/__init__.py b/hexi/plugins/nonebot_plugin_dailywife/services/__init__.py new file mode 100644 index 0000000..a98f9e9 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_dailywife/services/__init__.py @@ -0,0 +1,3 @@ +"""今日老婆 —— Service 层。""" + +from .store import get_member_list, load_group_config, write_group_config # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_dailywife/services/store.py b/hexi/plugins/nonebot_plugin_dailywife/services/store.py new file mode 100644 index 0000000..38935c4 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_dailywife/services/store.py @@ -0,0 +1,35 @@ +"""今日老婆 —— 数据访问(Service 层)。""" + +from __future__ import annotations + +import json +import os +from pathlib import Path + +_CONFIG_DIR = Path(__file__).resolve().parents[3] / "data" / "dailywife" / "config" + + +def get_member_list(all_list): + return [member["user_id"] for member in all_list] + + +def load_group_config(group_id: str) -> dict | None: + filename = _CONFIG_DIR / f"{group_id}.json" + try: + with open(filename, encoding="utf8") as f: + return json.load(f) + except Exception: + return None + + +def write_group_config(group_id: str, link_id: str, wife_id: str, date: str, config) -> None: + _CONFIG_DIR.mkdir(parents=True, exist_ok=True) + config_file = _CONFIG_DIR / f"{group_id}.json" + if config is not None: + config[link_id] = [wife_id, date] + else: + config = {link_id: [wife_id, date]} + tmp = config_file.with_suffix(".tmp") + with open(tmp, "w", encoding="utf-8") as f: + json.dump(config, f, ensure_ascii=False) + os.replace(tmp, config_file) diff --git a/hexi/plugins/nonebot_plugin_dailywife/utils.py b/hexi/plugins/nonebot_plugin_dailywife/utils.py deleted file mode 100644 index 7922039..0000000 --- a/hexi/plugins/nonebot_plugin_dailywife/utils.py +++ /dev/null @@ -1,50 +0,0 @@ -import hashlib -import json -from nonebot.log import logger as sv -import os -import random -import time -from io import BytesIO - -import aiohttp -import qrcode -import requests -import requests.exceptions -from PIL import Image, ImageDraw, ImageFont - - -# PNG重绘大小 -def png_resize(source_file, new_width=0, new_height=0, resample="LANCZOS", ref_file=''): - """ - PNG缩放透明度处理 - :param source_file: 源文件(Image.open()) - :param new_width: 设置的宽度 - :param new_height: 设置的高度 - :param resample: 抗锯齿 - :param ref_file: 参考文件 - :return: - """ - img = source_file - img = img.convert("RGBA") - width, height = img.size - - if ref_file != '': - imgRef = Image.open(ref_file) - new_width, new_height = imgRef.size - else: - if new_height == 0: - new_height = new_width * width / height - - bands = img.split() - resample_map = { - "NEAREST": Image.NEAREST, - "BILINEAR": Image.BILINEAR, - "BICUBIC": Image.BICUBIC, - "LANCZOS": Image.LANCZOS - } - resample_method = resample_map.get(resample, Image.LANCZOS) # 默认使用 LANCZOS - - bands = [b.resize((new_width, new_height), resample=resample_method) for b in bands] - resized_file = Image.merge('RGBA', bands) - - return resized_file diff --git a/hexi/plugins/nonebot_plugin_dailywife/utils/__init__.py b/hexi/plugins/nonebot_plugin_dailywife/utils/__init__.py new file mode 100644 index 0000000..c6a7ba3 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_dailywife/utils/__init__.py @@ -0,0 +1,3 @@ +"""今日老婆 —— 纯工具层。""" + +from .avatar import download_avatar, download_url, png_resize # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_dailywife/utils/avatar.py b/hexi/plugins/nonebot_plugin_dailywife/utils/avatar.py new file mode 100644 index 0000000..d596632 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_dailywife/utils/avatar.py @@ -0,0 +1,56 @@ +"""今日老婆 —— 头像工具(纯工具 + 网络请求)。""" + +from __future__ import annotations + +import hashlib +from io import BytesIO + +import httpx +from PIL import Image + + +# PNG 重绘大小 +def png_resize(source_file, new_width=0, new_height=0, resample="LANCZOS", ref_file=""): + img = source_file + img = img.convert("RGBA") + width, height = img.size + if ref_file != "": + imgRef = Image.open(ref_file) + new_width, new_height = imgRef.size + else: + if new_height == 0: + new_height = new_width * width / height + bands = img.split() + resample_map = { + "NEAREST": Image.NEAREST, + "BILINEAR": Image.BILINEAR, + "BICUBIC": Image.BICUBIC, + "LANCZOS": Image.LANCZOS, + } + resample_method = resample_map.get(resample, Image.LANCZOS) + bands = [b.resize((new_width, new_height), resample=resample_method) for b in bands] + return Image.merge("RGBA", bands) + + +async def download_url(url: str) -> bytes: + from nonebot import logger + + async with httpx.AsyncClient() as client: + for i in range(3): + try: + resp = await client.get(url) + if resp.status_code != 200: + continue + return resp.content + except Exception as e: + logger.error(f"Error downloading {url}, retry {i}/3: {str(e)}") + return b"" + + +async def download_avatar(user_id: str) -> bytes: + url = f"http://q1.qlogo.cn/g?b=qq&nk={user_id}&s=640" + data = await download_url(url) + if not data or hashlib.md5(data).hexdigest() == "acef72340ac0e914090bd35799f5594e": + url = f"http://q1.qlogo.cn/g?b=qq&nk={user_id}&s=100" + data = await download_url(url) + return data diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/__init__.py b/hexi/plugins/nonebot_plugin_deer_pipe/__init__.py index f1d85e5..4fba513 100644 --- a/hexi/plugins/nonebot_plugin_deer_pipe/__init__.py +++ b/hexi/plugins/nonebot_plugin_deer_pipe/__init__.py @@ -1,12 +1,9 @@ -from nonebot import on_command -from nonebot.adapters.onebot.v11 import MessageEvent, Bot, MessageSegment -from nonebot.plugin import PluginMetadata -from nonebot.rule import to_me +"""打卡记鹿 —— 入口(元数据 + 依赖)。""" -from .data_proc import * -from .img_generator import * -import io -import base64 +from nonebot import require +from nonebot.plugin import PluginMetadata + +require("nonebot_plugin_orm") __plugin_meta__ = PluginMetadata( name="打卡记鹿", @@ -16,54 +13,4 @@ __plugin_meta__ = PluginMetadata( type="application", ) -record = on_command("打卡记鹿", aliases={"打卡"}, rule=to_me()) -query = on_command("查询记录", aliases={"查卡"}) - - -@record.handle() -async def do_job(bot: Bot, ev: MessageEvent): - # 获取当前日期的年份和月份 - now = datetime.now() - year = now.year - month = now.month - # 获取发信人信息 - uid = str(ev.user_id) - message_id = ev.message_id - # 添加一条记录 - await record_month(uid) - # 获取记录 - img = await draw_calendar_grid_image(uid, year, month) - text_msg = MessageSegment.text("这是您的打卡记鹿:\n") - image_msg = MessageSegment.image(pic2b64(img)) - mix_msg = (text_msg,) - mix_msg += image_msg - reply_msg = (MessageSegment.reply(message_id),) - reply_msg += mix_msg - await record.finish(reply_msg) - - -def pic2b64(pic: Image) -> str: - buf = io.BytesIO() - pic.save(buf, format='PNG') - base64_str = base64.b64encode(buf.getvalue()).decode() - return 'base64://' + base64_str - - -@query.handle() -async def query_job(bot: Bot, ev: MessageEvent): - # 获取当前日期的年份和月份 - now = datetime.now() - year = now.year - month = now.month - # 获取发信人信息 - uid = str(ev.user_id) - message_id = ev.message_id - # 获取记录 - img_file = await draw_calendar_grid_image(uid, year, month) - text_msg = MessageSegment.text("这是您的记鹿:\n") - image_msg = MessageSegment.image(pic2b64(img_file)) - mix_msg = (text_msg,) - mix_msg += image_msg - reply_msg = (MessageSegment.reply(message_id),) - reply_msg += mix_msg - await record.finish(reply_msg) +from .handlers import query, record # noqa: E402,F401 diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/handlers/__init__.py b/hexi/plugins/nonebot_plugin_deer_pipe/handlers/__init__.py new file mode 100644 index 0000000..2cddac6 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_deer_pipe/handlers/__init__.py @@ -0,0 +1,3 @@ +"""打卡记鹿 —— Trigger 层。""" + +from .checkin import query, record # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/handlers/checkin.py b/hexi/plugins/nonebot_plugin_deer_pipe/handlers/checkin.py new file mode 100644 index 0000000..cc29f79 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_deer_pipe/handlers/checkin.py @@ -0,0 +1,58 @@ +"""打卡记鹿 —— 触发器(Trigger + View)层。""" + +from __future__ import annotations + +import base64 +import io +from datetime import datetime + +from nonebot import on_command +from nonebot.adapters.onebot.v11 import MessageEvent, Bot, MessageSegment +from nonebot.rule import to_me +from PIL import Image + +from ..services.checkin import checkin, review + +record = on_command("打卡记鹿", aliases={"打卡"}, rule=to_me()) +query = on_command("查询记录", aliases={"查卡"}) + + +def pic2b64(pic: Image) -> str: + buf = io.BytesIO() + pic.save(buf, format="PNG") + base64_str = base64.b64encode(buf.getvalue()).decode() + return "base64://" + base64_str + + +@record.handle() +async def do_job(bot: Bot, ev: MessageEvent): + now = datetime.now() + year = now.year + month = now.month + uid = str(ev.user_id) + message_id = ev.message_id + img = await checkin(uid, year, month) + text_msg = MessageSegment.text("这是您的打卡记鹿:\n") + image_msg = MessageSegment.image(pic2b64(img)) + mix_msg = (text_msg,) + mix_msg += image_msg + reply_msg = (MessageSegment.reply(message_id),) + reply_msg += mix_msg + await record.finish(reply_msg) + + +@query.handle() +async def query_job(bot: Bot, ev: MessageEvent): + now = datetime.now() + year = now.year + month = now.month + uid = str(ev.user_id) + message_id = ev.message_id + img_file = await review(uid, year, month) + text_msg = MessageSegment.text("这是您的记鹿:\n") + image_msg = MessageSegment.image(pic2b64(img_file)) + mix_msg = (text_msg,) + mix_msg += image_msg + reply_msg = (MessageSegment.reply(message_id),) + reply_msg += mix_msg + await record.finish(reply_msg) diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/models.py b/hexi/plugins/nonebot_plugin_deer_pipe/models.py new file mode 100644 index 0000000..c667a86 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_deer_pipe/models.py @@ -0,0 +1,23 @@ +"""打卡记鹿 —— 数据模型(Model 层)。""" + +from __future__ import annotations + +from datetime import datetime + +from nonebot import require + +require("nonebot_plugin_orm") + +from nonebot_plugin_orm import Model +from sqlalchemy import BigInteger, Date, Integer +from sqlalchemy.orm import Mapped, mapped_column + + +class CheckInRecord(Model): + """打卡记录,一行一次打卡,同一天可多次""" + + __tablename__ = "deer_pipe_checkin" + + id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) + uid: Mapped[int] = mapped_column(BigInteger, index=True) + date: Mapped[datetime.date] = mapped_column(Date, index=True) diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/data_proc.py b/hexi/plugins/nonebot_plugin_deer_pipe/repository.py similarity index 60% rename from hexi/plugins/nonebot_plugin_deer_pipe/data_proc.py rename to hexi/plugins/nonebot_plugin_deer_pipe/repository.py index 250c7e2..8826c6f 100644 --- a/hexi/plugins/nonebot_plugin_deer_pipe/data_proc.py +++ b/hexi/plugins/nonebot_plugin_deer_pipe/repository.py @@ -1,25 +1,19 @@ +"""打卡记鹿 —— 数据访问(Model/Repository 层)。""" + +from __future__ import annotations + from datetime import datetime from nonebot import require require("nonebot_plugin_orm") -from nonebot_plugin_orm import Model, get_session -from sqlalchemy import BigInteger, Date, Integer, select -from sqlalchemy.orm import Mapped, mapped_column +from nonebot_plugin_orm import get_session +from sqlalchemy import select + +from .models import CheckInRecord -class CheckInRecord(Model): - """打卡记录,一行一次打卡,同一天可多次""" - - __tablename__ = "deer_pipe_checkin" - - id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) - uid: Mapped[int] = mapped_column(BigInteger, index=True) - date: Mapped[datetime.date] = mapped_column(Date, index=True) - - -# 记录信息 async def record_month(uid): now = datetime.now() async with get_session() as session: @@ -27,7 +21,6 @@ async def record_month(uid): await session.commit() -# 读取当月信息(返回当月所有打卡的日,同一天多次打卡会有重复项) async def get_records(uid): now = datetime.now() month_start = datetime(now.year, now.month, 1).date() diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/font/SourceHanSansCN-Medium.otf b/hexi/plugins/nonebot_plugin_deer_pipe/res/font/SourceHanSansCN-Medium.otf similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/font/SourceHanSansCN-Medium.otf rename to hexi/plugins/nonebot_plugin_deer_pipe/res/font/SourceHanSansCN-Medium.otf diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/deer_pipe.jpg b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/deer_pipe.jpg similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/deer_pipe.jpg rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/deer_pipe.jpg diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J1.png b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J1.png similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J1.png rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J1.png diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J10.png b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J10.png similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J10.png rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J10.png diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J11.png b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J11.png similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J11.png rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J11.png diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J12.png b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J12.png similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J12.png rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J12.png diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J13.png b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J13.png similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J13.png rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J13.png diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J14.png b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J14.png similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J14.png rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J14.png diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J15.png b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J15.png similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J15.png rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J15.png diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J16.PNG b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J16.PNG similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J16.PNG rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J16.PNG diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J17.PNG b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J17.PNG similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J17.PNG rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J17.PNG diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J18.PNG b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J18.PNG similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J18.PNG rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J18.PNG diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J19.PNG b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J19.PNG similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J19.PNG rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J19.PNG diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J2.png b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J2.png similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J2.png rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J2.png diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J20.PNG b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J20.PNG similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J20.PNG rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J20.PNG diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J21.PNG b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J21.PNG similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J21.PNG rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J21.PNG diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J22.PNG b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J22.PNG similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J22.PNG rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J22.PNG diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J23.PNG b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J23.PNG similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J23.PNG rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J23.PNG diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J24.PNG b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J24.PNG similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J24.PNG rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J24.PNG diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J25.PNG b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J25.PNG similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J25.PNG rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J25.PNG diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J26.PNG b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J26.PNG similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J26.PNG rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J26.PNG diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J27.PNG b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J27.PNG similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J27.PNG rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J27.PNG diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J28.PNG b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J28.PNG similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J28.PNG rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J28.PNG diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J29.PNG b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J29.PNG similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J29.PNG rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J29.PNG diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J3.png b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J3.png similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J3.png rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J3.png diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J30.PNG b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J30.PNG similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J30.PNG rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J30.PNG diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J31.PNG b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J31.PNG similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J31.PNG rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J31.PNG diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J4.png b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J4.png similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J4.png rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J4.png diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J5.png b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J5.png similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J5.png rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J5.png diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J6.png b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J6.png similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J6.png rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J6.png diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J7.png b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J7.png similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J7.png rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J7.png diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J8.png b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J8.png similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J8.png rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J8.png diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img/right/J9.png b/hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J9.png similarity index 100% rename from hexi/plugins/nonebot_plugin_deer_pipe/img/right/J9.png rename to hexi/plugins/nonebot_plugin_deer_pipe/res/img/right/J9.png diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/services/__init__.py b/hexi/plugins/nonebot_plugin_deer_pipe/services/__init__.py new file mode 100644 index 0000000..a08c1b0 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_deer_pipe/services/__init__.py @@ -0,0 +1,3 @@ +"""打卡记鹿 —— Service 层。""" + +from .checkin import checkin, review # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/services/checkin.py b/hexi/plugins/nonebot_plugin_deer_pipe/services/checkin.py new file mode 100644 index 0000000..b8e141c --- /dev/null +++ b/hexi/plugins/nonebot_plugin_deer_pipe/services/checkin.py @@ -0,0 +1,19 @@ +"""打卡记鹿 —— 业务编排(Service 层)。""" + +from __future__ import annotations + +from PIL import Image + +from ..repository import record_month +from ..utils.render import draw_calendar_grid_image + + +async def checkin(uid: str, year: int, month: int) -> Image.Image: + """记录一次打卡并返回当月日历图。""" + await record_month(uid) + return await draw_calendar_grid_image(uid, year, month) + + +async def review(uid: str, year: int, month: int) -> Image.Image: + """仅查询(不新增记录)并返回当月日历图。""" + return await draw_calendar_grid_image(uid, year, month) diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/utils/__init__.py b/hexi/plugins/nonebot_plugin_deer_pipe/utils/__init__.py new file mode 100644 index 0000000..0577138 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_deer_pipe/utils/__init__.py @@ -0,0 +1,3 @@ +"""打卡记鹿 —— 渲染工具。""" + +from .render import draw_calendar_grid_image # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_deer_pipe/img_generator.py b/hexi/plugins/nonebot_plugin_deer_pipe/utils/render.py similarity index 65% rename from hexi/plugins/nonebot_plugin_deer_pipe/img_generator.py rename to hexi/plugins/nonebot_plugin_deer_pipe/utils/render.py index 36dfc5e..92ac0ac 100644 --- a/hexi/plugins/nonebot_plugin_deer_pipe/img_generator.py +++ b/hexi/plugins/nonebot_plugin_deer_pipe/utils/render.py @@ -1,121 +1,87 @@ -import calendar -from collections import Counter -import os -from datetime import datetime, timedelta -from PIL import Image, ImageDraw, ImageFont, ImageOps -from .data_proc import * -import random +"""打卡记鹿 —— 渲染工具(utils 层)。""" -filepath = os.path.dirname(__file__).replace("\\", "/") +from __future__ import annotations + +import calendar +import os +import random +from collections import Counter +from datetime import datetime, timedelta + +from nonebot.log import logger +from PIL import Image, ImageDraw, ImageFont, ImageOps + +from ..repository import get_records + +# 资源统一放插件 res/ 下 +filepath = os.path.join(os.path.dirname(os.path.dirname(__file__)), "res").replace("\\", "/") async def draw_calendar_grid_image(uid, year, month): - # 获取该月的第一天是星期几,以及这个月有多少天 first_weekday, num_days = calendar.monthrange(year, month) - - # 调整第一天的索引,使周日对应0,周六对应6 first_weekday = (first_weekday + 1) % 7 - - # 设置单元格尺寸和内边距 cell_size = 50 cell_padding = 5 - - # 计算当前月份的行数 - num_rows = (num_days + first_weekday + 6) // 7 + 1 # +1 行用于留空 - - # 计算图片宽度和高度 + num_rows = (num_days + first_weekday + 6) // 7 + 1 image_width = 7 * (cell_size + cell_padding) - cell_padding image_height = num_rows * (cell_size + cell_padding) - cell_padding - - # 创建图像对象 img = Image.new("RGBA", (image_width, image_height), "white") draw = ImageDraw.Draw(img) font_path = filepath + "/font/SourceHanSansCN-Medium.otf" - print(font_path) + logger.debug(f"打卡字体路径: {font_path}") font_normal = ImageFont.truetype(font=font_path, size=18) font_large = ImageFont.truetype(font=font_path, size=24) - - # 绘制网格线 for i in range(7): x = i * (cell_size + cell_padding) draw.line([(x, 55), (x, image_height)], fill="black", width=1) for j in range(0, image_height + cell_size, cell_size + cell_padding): draw.line([(0, j), (image_width, j)], fill="black", width=1) - - # 小🦌 deer_pipe_path = filepath + "/img/deer_pipe.jpg" deer_pipe_img = Image.open(deer_pipe_path) deer_pipe_img = deer_pipe_img.resize((54, 50)) - - # 画标题 title = f"{month}月打卡记鹿" text_length = draw.textlength(text=title, font=font_large) img_xy = (int(((image_width - text_length + 55) / 2) - 55), 5) title_pos = ((image_width - text_length + 55) / 2, 10) img.paste(deer_pipe_img, img_xy) draw.text(title_pos, title, fill="black", font=font_large) - - # 获取🦌信息(同一天多次打卡会得到重复项) day_counts = Counter(await get_records(uid)) - # 填充日期 date = datetime(year, month, 1) for day in range(1, num_days + 1): weekday = (first_weekday + day - 1) % 7 - row = (first_weekday + day - 1) // 7 + 1 # +1 行用于留空 + row = (first_weekday + day - 1) // 7 + 1 x = weekday * (cell_size + cell_padding) + cell_padding y = row * (cell_size + cell_padding) + cell_padding img.paste(deer_pipe_img, (x - 4, y)) - draw.text((x+20, y - 2), f"{str(day)}", fill="black", font=font_normal) - # 🦌是天的标记,打卡的PNG印记才是要多次绘制的对象,横向错开 + draw.text((x + 20, y - 2), f"{str(day)}", fill="black", font=font_normal) for i in range(day_counts.get(day, 0)): im = get_random_right() img = image_paste(im, img, (x - 4 + i * 10, y)) - - # 保存图片 - # img.save(output_image_path) - - # 显示图片 - # img.show() img = ImageOps.expand(img, border=5, fill="black") img = ImageOps.expand(img, border=5, fill="white") return img -# 全局变量,用于存储已经选择过的文件名 selected_images = [] def get_random_right(): global selected_images path = filepath + "/img/right" - # 过滤掉已经选择过的文件名 im_name = [name for name in os.listdir(path) if name not in selected_images] - - # 如果所有文件都已经选择过,重新初始化已选择列表 if not im_name: selected_images = [] im_name = os.listdir(path) - index = random.randint(0, len(im_name) - 1) im = im_name[index] - selected_images.append(im) # 将选择的文件名添加到已选择列表中 - + selected_images.append(im) im_path = os.path.join(path, im) im_file = Image.open(im_path) im_file = im_file.resize((50, 50)) return im_file -# 图片粘贴 def image_paste(paste_image, under_image, pos): - """ - :param paste_image: 需要粘贴的图片 - :param under_image: 底图 - :param pos: 位置(x,y)坐标 - :return: 返回图片 - """ - # 获取需要贴入图片的透明通道 r, g, b, alpha = paste_image.split() - # 粘贴时将alpha值传递至mask属性 under_image.paste(paste_image, pos, alpha) return under_image diff --git a/hexi/plugins/nonebot_plugin_dice/__init__.py b/hexi/plugins/nonebot_plugin_dice/__init__.py index 24c09d8..5447aa9 100644 --- a/hexi/plugins/nonebot_plugin_dice/__init__.py +++ b/hexi/plugins/nonebot_plugin_dice/__init__.py @@ -1,13 +1,9 @@ -import random -import re +"""掷骰子 / 结婚判定""" -from nonebot import on_regex, on_startswith, require -from nonebot.adapters.onebot.v11 import MessageEvent +from nonebot import require from nonebot.plugin import PluginMetadata -from nonebot.typing import T_State require("nonebot_plugin_alconna") -from nonebot_plugin_alconna import UniMessage __plugin_meta__ = PluginMetadata( name="掷骰子", @@ -16,69 +12,4 @@ __plugin_meta__ = PluginMetadata( type="application", ) -dice = on_regex( - re.compile( - r"^\.r\s*(?:(?P\d{0,2})d(?:(?P\d{1,4})~)?(?P\d{0,4})(?:(?P[+-])(?P\d{0,5}))?)?\b", - re.I, - ) -) -marriage = on_startswith(".qj") - - -async def do_dice( - ev: MessageEvent, - num: int, - min_: int, - max_: int, - opr: int, - offset: int, - tip: str = "的掷骰结果是:", -) -> None: - if num == 0: - await UniMessage.text("咦?我骰子呢?").send() - return - min_, max_ = min(min_, max_), max(min_, max_) - rolls = [random.randint(min_, max_) for _ in range(num)] - total = sum(rolls) - rolls_str = "+".join(map(str, rolls)) - if len(rolls_str) > 100: - rolls_str = str(total) - res = total + opr * offset - sign = " +-"[opr] - msg = [ - f"{tip}\n", - str(num) if num > 1 else "", - "D", - f"{min_}~" if min_ != 1 else "", - str(max_), - f"{sign}{offset}" if offset else "", - f"={rolls_str}", - f"{sign}{offset}" if offset else "", - f"={res}" if offset or num > 1 else "", - ] - await UniMessage.text("".join(msg)).send(at_sender=True) - - -@dice.handle() -async def dice_handle(ev: MessageEvent, state: T_State): - num, min_, max_, opr, offset = 1, 1, 100, 1, 0 - matched = state.get("_matched_dict") or {} - if s := matched.get("num"): - num = int(s) - if s := matched.get("min"): - min_ = int(s) - if s := matched.get("max"): - max_ = int(s) - if s := matched.get("opr"): - opr = -1 if s == "-" else 1 - if s := matched.get("offset"): - offset = int(s) - await do_dice(ev, num, min_, max_, opr, offset) - - -@marriage.handle() -async def marriage_handle(ev: MessageEvent): - text = ev.message.extract_plain_text().strip() - wife = text[len(".qj") :].strip() - tip = f"与{wife}的ケッコンカッコカリ结果是:" if wife else "的ケッコンカッコカリ结果是:" - await do_dice(ev, 1, 3, 6, 1, 0, tip) +from .handlers import dice, marriage # noqa: E402,F401 diff --git a/hexi/plugins/nonebot_plugin_dice/handlers/__init__.py b/hexi/plugins/nonebot_plugin_dice/handlers/__init__.py new file mode 100644 index 0000000..d29ce3d --- /dev/null +++ b/hexi/plugins/nonebot_plugin_dice/handlers/__init__.py @@ -0,0 +1,3 @@ +"""掷骰子 —— Trigger 层。""" + +from .roll import dice, marriage # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_dice/handlers/roll.py b/hexi/plugins/nonebot_plugin_dice/handlers/roll.py new file mode 100644 index 0000000..6ad50d9 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_dice/handlers/roll.py @@ -0,0 +1,49 @@ +"""掷骰子 —— 触发器(Trigger)层。""" + +from __future__ import annotations + +import re + +from nonebot import on_regex, on_startswith, require +from nonebot.adapters.onebot.v11 import MessageEvent +from nonebot.typing import T_State +from nonebot_plugin_alconna import UniMessage + +from ..services.dice import build_dice_message + +require("nonebot_plugin_alconna") + +dice = on_regex( + re.compile( + r"^\.r\s*(?:(?P\d{0,2})d(?:(?P\d{1,4})~)?(?P\d{0,4})(?:(?P[+-])(?P\d{0,5}))?)?\b", + re.I, + ) +) +marriage = on_startswith(".qj") + + +@dice.handle() +async def dice_handle(ev: MessageEvent, state: T_State): + num, min_, max_, opr, offset = 1, 1, 100, 1, 0 + matched = state.get("_matched_dict") or {} + if s := matched.get("num"): + num = int(s) + if s := matched.get("min"): + min_ = int(s) + if s := matched.get("max"): + max_ = int(s) + if s := matched.get("opr"): + opr = -1 if s == "-" else 1 + if s := matched.get("offset"): + offset = int(s) + await UniMessage.text(build_dice_message(num, min_, max_, opr, offset)).send( + at_sender=True + ) + + +@marriage.handle() +async def marriage_handle(ev: MessageEvent): + text = ev.message.extract_plain_text().strip() + wife = text[len(".qj") :].strip() + tip = f"与{wife}的ケッコンカッコカリ结果是:" if wife else "的ケッコンカッコカリ结果是:" + await UniMessage.text(build_dice_message(1, 3, 6, 1, 0, tip)).send(at_sender=True) diff --git a/hexi/plugins/nonebot_plugin_dice/services/__init__.py b/hexi/plugins/nonebot_plugin_dice/services/__init__.py new file mode 100644 index 0000000..4243786 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_dice/services/__init__.py @@ -0,0 +1,3 @@ +"""掷骰子 —— Service 层。""" + +from .dice import build_dice_message # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_dice/services/dice.py b/hexi/plugins/nonebot_plugin_dice/services/dice.py new file mode 100644 index 0000000..af87901 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_dice/services/dice.py @@ -0,0 +1,38 @@ +"""掷骰子 —— 业务逻辑(Service 层,不依赖 nonebot,可单测)。""" + +from __future__ import annotations + +import random + + +def build_dice_message( + num: int, + min_: int, + max_: int, + opr: int, + offset: int, + tip: str = "的掷骰结果是:", +) -> str: + if num == 0: + return "咦?我骰子呢?" + min_, max_ = min(min_, max_), max(min_, max_) + rolls = [random.randint(min_, max_) for _ in range(num)] + total = sum(rolls) + rolls_str = "+".join(map(str, rolls)) + if len(rolls_str) > 100: + rolls_str = str(total) + res = total + opr * offset + sign = " -+"[opr] + return "".join( + [ + f"{tip}\n", + str(num) if num > 1 else "", + "D", + f"{min_}~" if min_ != 1 else "", + str(max_), + f"{sign}{offset}" if offset else "", + f"={rolls_str}", + f"{sign}{offset}" if offset else "", + f"={res}" if offset or num > 1 else "", + ] + ) diff --git a/hexi/plugins/nonebot_plugin_galgame_card/__init__.py b/hexi/plugins/nonebot_plugin_galgame_card/__init__.py index 77abb08..f7a6895 100644 --- a/hexi/plugins/nonebot_plugin_galgame_card/__init__.py +++ b/hexi/plugins/nonebot_plugin_galgame_card/__init__.py @@ -1,37 +1,25 @@ """群聊人设卡 —— 基于群聊语料蒸馏成员形象,生成 galgame 风格人物卡 -消息入口:on_message 监听全部消息事件,类型注解过滤出群聊, -两级闸门(群开关 + 个人 opt-in)通过后,治理层处理落库。 +消息入口:on_message 监听全部消息事件,类型注解过滤出群聊,两级闸门(群开关 + +个人 opt-in)通过后,治理层处理落库。采集编排已下沉到 services/collector.py。 当前进度:数据层 + 采集层(消息路径)完成;总结路径(印象/画像)待实现。 """ -import json -import time -from collections import deque -from typing import Optional - -from nonebot import get_driver, on_message, require +from nonebot import get_driver, require require("nonebot_plugin_orm") -from nonebot.adapters.onebot.v11 import GroupMessageEvent +from nonebot.adapters.onebot.v11 import GroupMessageEvent # noqa: F401 from nonebot.plugin import PluginMetadata # ── 禁用 nonebot_plugin_orm 的启动自动同步 ───────────────────────────── -# .env 里 ALEMBIC_STARTUP_CHECK=false 时,orm 插件每次启动都会 autogenerate -# 同步数据库模式;模型一有变更(改 models.py)就会清空整表数据(已实测踩坑)。 -# 本插件的 schema 演进统一走 repository.ensure_schema() 显式迁移, -# 因此把 migrate.sync 替换为安全空操作。改动必须在插件导入期完成 -# (早于 orm 的 on_startup 钩子执行)。 from nonebot import logger as _logger try: import nonebot_plugin_orm.migrate as _orm_migrate def _safe_sync(*_args, **_kwargs): - # 同步函数:orm 用 greenlet_spawn 同步调用 migrate.sync, - # 若写成 async def 会产生 never-awaited coroutine 警告 _logger.debug("galgame_card | 已禁用 orm 自动同步(schema 演进由 ensure_schema 接管)") _orm_migrate.sync = _safe_sync @@ -41,6 +29,7 @@ except ImportError: from . import models # noqa: F401 # 确保表结构注册 from . import repository, processor from . import web # noqa: F401 # Web 管理后台(/galgame_card) +from . import handlers as _handlers # noqa: E402 from hexi.web_config import register_plugin_config # noqa: E402 from hexi.web_plugin_registry import register_web_plugin # noqa: E402 @@ -48,9 +37,7 @@ from . import web_hub # noqa: E402 def _apply_galgame_config(values: dict) -> None: - """Web 保存后热刷新:直接改 config 模块的 pydantic 对象,无需重启。""" import sys - conf_mod = sys.modules.get("hexi.plugins.nonebot_plugin_galgame_card.config") if conf_mod is None: return @@ -65,9 +52,7 @@ def _apply_galgame_config(values: dict) -> None: def _get_galgame_config_values() -> dict: - """Web 表单回填当前生效值。""" import sys - conf_mod = sys.modules.get("hexi.plugins.nonebot_plugin_galgame_card.config") conf = getattr(conf_mod, "config", None) if conf_mod else None if conf is None: @@ -104,32 +89,9 @@ __plugin_meta__ = PluginMetadata( name="群聊人设卡", description="基于群聊语料蒸馏成员形象,生成 galgame 风格人物卡", usage="开发中……", + type="application", ) -# 采样/复读检测的内存状态(不进库) -_recent_texts: dict[int, deque[str]] = {} # group_id -> 最近消息文本 -_last_store: dict[tuple[int, int], float] = {} # (group_id, user_id) -> 上次落库时间戳 - - -def _is_repeat(group_id: int, content: str) -> bool: - """复读检测:内容在最近 N 条里出现过则丢弃""" - queue = _recent_texts.setdefault(group_id, deque(maxlen=processor.REPEAT_WINDOW)) - if content in queue: - return True - queue.append(content) - return False - - -def _throttled(group_id: int, user_id: int) -> bool: - """刷屏采样:5 秒内同一个人只落库一次""" - key = (group_id, user_id) - now = time.time() - if now - _last_store.get(key, 0) < processor.THROTTLE_SECONDS: - return True - _last_store[key] = now - return False - - _driver = get_driver() @@ -137,51 +99,3 @@ _driver = get_driver() async def _ensure_schema(): """老库迁移(persona_group.group_name 列),幂等""" await repository.ensure_schema() - - -collector = on_message(block=False) # 监听全部消息事件,不拦截其他插件 - - -@collector.handle() -async def collect(event: GroupMessageEvent): - # 鉴权:两级闸门(群开关 → 个人 opt-in) - if not await repository.is_group_enabled(event.group_id): - return - if not await repository.is_joined(event.user_id, event.group_id): - return - # 机器人自己(如转发)不收 - if event.user_id == event.self_id: - return - - command_starts = get_driver().config.command_start - # 治理:文本 / 图片 / 表情任一存在才记录 - if not processor.has_recordable_content(event): - return - text = processor.filter_content( - processor.extract_text(event), command_starts=command_starts - ) - image_hashes = processor.extract_image_hashes(event) - content = processor.build_content( - text or "", len(image_hashes), processor.count_faces(event) - ) - if content is None: - return - # 脱敏:敏感值替换为占位符(语境 = 本群最近几条已治理文本,用于"验证码/密码"类强化) - context = " ".join(_recent_texts.get(event.group_id, ())) - content = processor.desensitize(content, context) - # 采样:复读 + 刷屏 - if _is_repeat(event.group_id, content): - return - if _throttled(event.group_id, event.user_id): - return - - await repository.add_chat_log( - user_id=event.user_id, - group_id=event.group_id, - content=content, - nickname=event.sender.card or event.sender.nickname or "", - target_user_id=processor.extract_target_user_id(event), - reply_to_content=processor.extract_reply_to_content(event), - image_count=len(image_hashes), - image_hashes=json.dumps(image_hashes, ensure_ascii=False) if image_hashes else None, - ) diff --git a/hexi/plugins/nonebot_plugin_galgame_card/handlers/__init__.py b/hexi/plugins/nonebot_plugin_galgame_card/handlers/__init__.py new file mode 100644 index 0000000..9d488cc --- /dev/null +++ b/hexi/plugins/nonebot_plugin_galgame_card/handlers/__init__.py @@ -0,0 +1,3 @@ +"""群聊人设卡 —— Trigger 层。""" + +from .collector import collector # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_galgame_card/handlers/collector.py b/hexi/plugins/nonebot_plugin_galgame_card/handlers/collector.py new file mode 100644 index 0000000..850153d --- /dev/null +++ b/hexi/plugins/nonebot_plugin_galgame_card/handlers/collector.py @@ -0,0 +1,15 @@ +"""群聊人设卡 —— 触发器(Trigger)层。""" + +from __future__ import annotations + +from nonebot import on_message +from nonebot.adapters.onebot.v11 import GroupMessageEvent + +from ..services.collector import collect + +collector = on_message(block=False) # 监听全部消息事件,不拦截其他插件 + + +@collector.handle() +async def _collect(event: GroupMessageEvent): + await collect(event) diff --git a/hexi/plugins/nonebot_plugin_galgame_card/services/__init__.py b/hexi/plugins/nonebot_plugin_galgame_card/services/__init__.py new file mode 100644 index 0000000..128107c --- /dev/null +++ b/hexi/plugins/nonebot_plugin_galgame_card/services/__init__.py @@ -0,0 +1,3 @@ +"""群聊人设卡 —— Service 层。""" + +from .collector import collect # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_galgame_card/services/collector.py b/hexi/plugins/nonebot_plugin_galgame_card/services/collector.py new file mode 100644 index 0000000..7ba0cb8 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_galgame_card/services/collector.py @@ -0,0 +1,77 @@ +"""群聊人设卡 —— 采集编排(Service 层)。 + +把 __init__.py 里的采样/复读/刷屏检测与落库编排抽到此处,使入口更薄。 +""" + +from __future__ import annotations + +import json +import time +from collections import deque + +from nonebot import get_driver + +from .. import processor, repository + +# 采样/复读检测的内存状态(不进库) +_recent_texts: dict[int, deque[str]] = {} # group_id -> 最近消息文本 +_last_store: dict[tuple[int, int], float] = {} # (group_id, user_id) -> 上次落库时间戳 + + +def _is_repeat(group_id: int, content: str) -> bool: + """复读检测:内容在最近 N 条里出现过则丢弃""" + queue = _recent_texts.setdefault(group_id, deque(maxlen=processor.REPEAT_WINDOW)) + if content in queue: + return True + queue.append(content) + return False + + +def _throttled(group_id: int, user_id: int) -> bool: + """刷屏采样:5 秒内同一个人只落库一次""" + key = (group_id, user_id) + now = time.time() + if now - _last_store.get(key, 0) < processor.THROTTLE_SECONDS: + return True + _last_store[key] = now + return False + + +async def collect(event): + """鉴权 + 治理 + 采样 + 落库。""" + if not await repository.is_group_enabled(event.group_id): + return + if not await repository.is_joined(event.user_id, event.group_id): + return + if event.user_id == event.self_id: + return + + command_starts = get_driver().config.command_start + if not processor.has_recordable_content(event): + return + text = processor.filter_content( + processor.extract_text(event), command_starts=command_starts + ) + image_hashes = processor.extract_image_hashes(event) + content = processor.build_content( + text or "", len(image_hashes), processor.count_faces(event) + ) + if content is None: + return + context = " ".join(_recent_texts.get(event.group_id, ())) + content = processor.desensitize(content, context) + if _is_repeat(event.group_id, content): + return + if _throttled(event.group_id, event.user_id): + return + + await repository.add_chat_log( + user_id=event.user_id, + group_id=event.group_id, + content=content, + nickname=event.sender.card or event.sender.nickname or "", + target_user_id=processor.extract_target_user_id(event), + reply_to_content=processor.extract_reply_to_content(event), + image_count=len(image_hashes), + image_hashes=json.dumps(image_hashes, ensure_ascii=False) if image_hashes else None, + ) diff --git a/hexi/plugins/nonebot_plugin_group_tools/__init__.py b/hexi/plugins/nonebot_plugin_group_tools/__init__.py index 1f84281..c98d6b7 100644 --- a/hexi/plugins/nonebot_plugin_group_tools/__init__.py +++ b/hexi/plugins/nonebot_plugin_group_tools/__init__.py @@ -30,4 +30,7 @@ __plugin_meta__ = PluginMetadata( type="application", ) +from . import config as _config # noqa: E402,F401 from .handlers import chat, management, notices, repeater # noqa: E402,F401 + +_config.register_config() diff --git a/hexi/plugins/nonebot_plugin_group_tools/config.py b/hexi/plugins/nonebot_plugin_group_tools/config.py new file mode 100644 index 0000000..6cb180b --- /dev/null +++ b/hexi/plugins/nonebot_plugin_group_tools/config.py @@ -0,0 +1,32 @@ +"""group_tools —— 配置注册(按《插件配置文件标准》)。 + +当前插件已具备 handlers/services/utils 分层;此处仅把模块级常量(如违禁词) +接入统一 Web 配置,使 Web 管理台(/hub)可读可改。 +""" + +from __future__ import annotations + +import sys as _sys + +from hexi.config_standard import register_config_items + +from . import constants + +# plugin_id = NoneBot 插件模块名 +_PLUGIN_ID = __package__ + + +def register_config() -> None: + register_config_items( + _PLUGIN_ID, + [ + { + "key": "BANNED_WORDS", + "label": "违禁词", + "type": "text", + "item_type": "str", + "default": list(constants.BANNED_WORDS), + }, + ], + store=_sys.modules[constants.__name__], + ) diff --git a/hexi/plugins/nonebot_plugin_group_tools/dk_is_me.jpg b/hexi/plugins/nonebot_plugin_group_tools/dk_is_me.jpg deleted file mode 100644 index 11bb0b8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/dk_is_me.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/handlers/chat/__init__.py b/hexi/plugins/nonebot_plugin_group_tools/handlers/chat/__init__.py new file mode 100644 index 0000000..b000a1e --- /dev/null +++ b/hexi/plugins/nonebot_plugin_group_tools/handlers/chat/__init__.py @@ -0,0 +1,3 @@ +"""聊天类触发(handlers/chat)。""" + +from . import greet, reaction, voice # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_group_tools/handlers/chat.py b/hexi/plugins/nonebot_plugin_group_tools/handlers/chat/greet.py similarity index 53% rename from hexi/plugins/nonebot_plugin_group_tools/handlers/chat.py rename to hexi/plugins/nonebot_plugin_group_tools/handlers/chat/greet.py index 3814055..169be9e 100644 --- a/hexi/plugins/nonebot_plugin_group_tools/handlers/chat.py +++ b/hexi/plugins/nonebot_plugin_group_tools/handlers/chat/greet.py @@ -1,21 +1,20 @@ -import random +"""群管理工具 —— 聊天互动(问候/尬聊)。""" + +from __future__ import annotations from nonebot import get_driver, on_command, on_fullmatch, on_keyword, require from nonebot.adapters.onebot.v11 import Bot, MessageEvent from nonebot.rule import to_me - -require("nonebot_plugin_alconna") from nonebot_plugin_alconna import UniMessage -from ..constants import BANNED_WORDS, RES_DIR -from ..services.moderation import silence -from ..utils.media import image_to_base64, random_audio +from ...constants import RES_DIR +from ...services.moderation import silence +from ...utils.media import image_to_base64 + +require("nonebot_plugin_alconna") SUPERUSERS = get_driver().config.superusers - -# ---------- 基础打招呼 ---------- - say_hello = on_command( "zai?", aliases={"在?", "在?", "在吗", "在么?", "在嘛", "在嘛?"}, @@ -29,8 +28,6 @@ async def say_hello_handle(ev: MessageEvent): await UniMessage.text("はい!私はいつも貴方の側にいますよ!").send() -# ---------- 关键词/整句互动 ---------- - say_sorry = on_fullmatch("沙雕机器人") @@ -95,70 +92,3 @@ nihaole = on_fullmatch("我好了") @nihaole.handle() async def nihaole_handle(bot: Bot, ev: MessageEvent): await UniMessage.text("不许好,憋回去!").send() - # await silence(bot, ev, 30) - - -play_zhanshi = on_keyword({"优质的战士"}) - - -@play_zhanshi.handle() -async def play_zhanshi_handle(ev: MessageEvent): - base64_str = random_audio(RES_DIR / "record" / "voice" / "youzhizhanshi") - if base64_str: - await UniMessage.voice(url=base64_str).send() - - -play_ice = on_fullmatch("溜冰") - - -@play_ice.handle() -async def play_ice_handle(ev: MessageEvent): - base64_str = random_audio(RES_DIR / "record" / "voice" / "ice") - if base64_str: - await UniMessage.voice(url=base64_str).send() - - -play_dxl = on_fullmatch("罕见") - - -@play_dxl.handle() -async def play_dxl_handle(ev: MessageEvent): - base64_str = random_audio(RES_DIR / "record" / "voice" / "dxl") - if base64_str: - await UniMessage.voice(url=base64_str).send() - - -chat_queshi = on_keyword({"确实", "有一说一", "u1s1", "yysy"}) - - -@chat_queshi.handle() -async def chat_queshi_handle(ev: MessageEvent): - if random.random() < 0.05: - base64_str = image_to_base64(RES_DIR / "img" / "确实.jpg") - if base64_str: - await UniMessage.image(url=base64_str).send() - - -chat_neigui = on_keyword({"内鬼"}) - - -@chat_neigui.handle() -async def chat_neigui_handle(ev: MessageEvent): - if random.random() < 0.10: - base64_str = image_to_base64(RES_DIR / "img" / "内鬼.png") - if base64_str: - await UniMessage.image(url=base64_str).send() - - -# ---------- 违禁词黑手语音 ---------- - -banned_word_voice = on_command( - "ban_word", aliases=set(BANNED_WORDS), rule=to_me(), block=True -) - - -@banned_word_voice.handle() -async def banned_word_voice_handle(ev: MessageEvent): - base64_str = random_audio(RES_DIR / "record" / "voice" / "heishou") - if base64_str: - await UniMessage.voice(url=base64_str).send() diff --git a/hexi/plugins/nonebot_plugin_group_tools/handlers/chat/reaction.py b/hexi/plugins/nonebot_plugin_group_tools/handlers/chat/reaction.py new file mode 100644 index 0000000..ebc749a --- /dev/null +++ b/hexi/plugins/nonebot_plugin_group_tools/handlers/chat/reaction.py @@ -0,0 +1,37 @@ +"""群管理工具 —— 聊天互动(概率表情)。""" + +from __future__ import annotations + +import random + +from nonebot import require +from nonebot.adapters.onebot.v11 import MessageEvent +from nonebot_plugin_alconna import UniMessage +from nonebot import on_keyword + +from ...constants import RES_DIR +from ...utils.media import image_to_base64 + +require("nonebot_plugin_alconna") + + +chat_queshi = on_keyword({"确实", "有一说一", "u1s1", "yysy"}) + + +@chat_queshi.handle() +async def chat_queshi_handle(ev: MessageEvent): + if random.random() < 0.05: + base64_str = image_to_base64(RES_DIR / "img" / "确实.jpg") + if base64_str: + await UniMessage.image(url=base64_str).send() + + +chat_neigui = on_keyword({"内鬼"}) + + +@chat_neigui.handle() +async def chat_neigui_handle(ev: MessageEvent): + if random.random() < 0.10: + base64_str = image_to_base64(RES_DIR / "img" / "内鬼.png") + if base64_str: + await UniMessage.image(url=base64_str).send() diff --git a/hexi/plugins/nonebot_plugin_group_tools/handlers/chat/voice.py b/hexi/plugins/nonebot_plugin_group_tools/handlers/chat/voice.py new file mode 100644 index 0000000..f3dfd1c --- /dev/null +++ b/hexi/plugins/nonebot_plugin_group_tools/handlers/chat/voice.py @@ -0,0 +1,55 @@ +"""群管理工具 —— 聊天互动(语音)。""" + +from __future__ import annotations + +from nonebot import on_command, on_fullmatch, on_keyword, require +from nonebot.adapters.onebot.v11 import MessageEvent +from nonebot.rule import to_me +from nonebot_plugin_alconna import UniMessage + +from ...constants import BANNED_WORDS, RES_DIR +from ...utils.media import random_audio + +require("nonebot_plugin_alconna") + + +play_zhanshi = on_keyword({"优质的战士"}) + + +@play_zhanshi.handle() +async def play_zhanshi_handle(ev: MessageEvent): + base64_str = random_audio(RES_DIR / "record" / "voice" / "youzhizhanshi") + if base64_str: + await UniMessage.voice(url=base64_str).send() + + +play_ice = on_fullmatch("溜冰") + + +@play_ice.handle() +async def play_ice_handle(ev: MessageEvent): + base64_str = random_audio(RES_DIR / "record" / "voice" / "ice") + if base64_str: + await UniMessage.voice(url=base64_str).send() + + +play_dxl = on_fullmatch("罕见") + + +@play_dxl.handle() +async def play_dxl_handle(ev: MessageEvent): + base64_str = random_audio(RES_DIR / "record" / "voice" / "dxl") + if base64_str: + await UniMessage.voice(url=base64_str).send() + + +banned_word_voice = on_command( + "ban_word", aliases=set(BANNED_WORDS), rule=to_me(), block=True +) + + +@banned_word_voice.handle() +async def banned_word_voice_handle(ev: MessageEvent): + base64_str = random_audio(RES_DIR / "record" / "voice" / "heishou") + if base64_str: + await UniMessage.voice(url=base64_str).send() diff --git a/hexi/plugins/nonebot_plugin_group_tools/handlers/management.py b/hexi/plugins/nonebot_plugin_group_tools/handlers/management.py deleted file mode 100644 index 7617ec1..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/handlers/management.py +++ /dev/null @@ -1,399 +0,0 @@ -import asyncio -import math -import random -import re -import time - -from nonebot import logger, on_fullmatch, on_message, on_regex, on_startswith, require -from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent, MessageEvent -from nonebot.rule import Rule, is_type - -require("nonebot_plugin_alconna") -from nonebot_plugin_alconna import UniMessage - -from hexi.plugins.nonebot_plugin_hexi_core.custom_utils import check_manage - -from ..constants import IMG_DIR, TEMP_DIR -from ..services.moderation import group_silence, member_silence, silence -from ..services.profile import card_edit, group_name, title_get -from ..services.video import download_video, get_video_info, local_video -from ..utils.media import image_to_base64 -from ..utils.message import get_at_id, has_at_all -from ..utils.permissions import check_perm, honor_info, self_member_info -from ..utils.text import is_number, parse_seconds, strip_prefix - - -# ============ 管理员与公告 ============ - -set_admin = on_startswith("设置管理员") -unset_admin = on_startswith("取消管理员") -set_group_notice = on_startswith("设置群公告") - - -@set_admin.handle() -async def set_admin_handle(bot: Bot, ev: GroupMessageEvent): - if not await check_perm(bot, ev): - return - for seg in ev.message: - if seg.type == "at" and seg.data.get("qq") != "all": - await bot.set_group_admin( - group_id=ev.group_id, user_id=int(seg.data["qq"]), enable=True - ) - await UniMessage.text("我好了").send() - - -@unset_admin.handle() -async def unset_admin_handle(bot: Bot, ev: GroupMessageEvent): - if not await check_perm(bot, ev): - return - for seg in ev.message: - if seg.type == "at" and seg.data.get("qq") != "all": - await bot.set_group_admin( - group_id=ev.group_id, user_id=int(seg.data["qq"]), enable=False - ) - await UniMessage.text("我好了").send() - - -@set_group_notice.handle() -async def set_group_notice_handle(bot: Bot, ev: GroupMessageEvent): - content = ev.message.extract_plain_text().removeprefix("设置群公告").strip() - if not content: - return - if not await check_perm(bot, ev): - return - await bot.call_api("_send_group_notice", group_id=ev.group_id, content=content) - await UniMessage.text("我好了").send() - - -# ============ 禁言相关 ============ - - -def _is_ban_cmd(event: GroupMessageEvent) -> bool: - """分钟制禁言命令:"禁言@xxx 5" 表示禁言 5 分钟;排除秒制的 "禁言一下" """ - text = event.message.extract_plain_text() - return text.startswith("禁言") and not text.startswith("禁言一下") - - -ban_user = on_message(rule=Rule(_is_ban_cmd) & is_type(GroupMessageEvent), block=True) -ban_member = on_startswith(("来发口球", "塞口球", "禁言一下")) -one_for_one = on_startswith("极限一换一") -cancel_ban = on_startswith(("解除口球", "取消口球", "摘口球", "脱口球", "取消禁言", "解除禁言", "解禁")) -ban_all = on_fullmatch(("全员口球", "全员禁言")) -cancel_ban_all = on_fullmatch(("取消全员口球", "取消全员禁言", "解除全员口球", "解除全员禁言")) - -sleep_8h = on_fullmatch(("睡眠套餐", "休眠套餐", "精致睡眠", "来一份精致睡眠套餐")) -tea = on_regex(r"(来|來)(.*(份|个)(.*)(睡|茶)(.*))套餐") - - -@ban_user.handle() -async def ban_user_handle(bot: Bot, ev: GroupMessageEvent): - if not await check_perm(bot, ev, silent=True): - return - msg = ev.message.extract_plain_text().removeprefix("禁言").strip() - at_seg = next( - (seg for seg in ev.message if seg.type == "at" and seg.data.get("qq") != "all"), - None, - ) - if not at_seg: - return - try: - uid = int(at_seg.data["qq"]) - minutes = 1 if not msg else int(msg) - await bot.set_group_ban( - group_id=ev.group_id, user_id=uid, duration=minutes * 60 - ) - await UniMessage.text("我好了").send() - except Exception as ex: - logger.error(ex) - - -@ban_member.handle() -async def ban_member_handle(bot: Bot, ev: GroupMessageEvent): - uid = ev.user_id - gid = ev.group_id - duration_text = strip_prefix( - ev.message.extract_plain_text(), ("来发口球", "塞口球", "禁言一下") - ) - if not duration_text: - duration_text = "30" - if has_at_all(ev): - await group_silence(bot, ev, gid, True) - return - sid = get_at_id(ev) or uid - await member_silence(bot, ev, uid, sid, gid, duration_text, silent=False) - - -@one_for_one.handle() -async def one_for_one_handle(bot: Bot, ev: GroupMessageEvent): - uid = ev.user_id - gid = ev.group_id - duration_text = strip_prefix(ev.message.extract_plain_text(), ("极限一换一",)) - if has_at_all(ev): - await UniMessage.text("人干事?").send(at_sender=True) - await member_silence(bot, ev, uid, uid, gid, "180", silent=False) - return - seconds = parse_seconds(duration_text) - if seconds is None: - await UniMessage.text("请输入正确时长~").send(at_sender=True) - return - if seconds > 30: - await UniMessage.text("时长不可大于30秒哟~").send(at_sender=True) - return - sid = get_at_id(ev) or uid - await member_silence(bot, ev, uid, sid, gid, str(seconds), silent=True) - await member_silence(bot, ev, uid, uid, gid, str(seconds), silent=True) - await ( - UniMessage.at(user_id=str(uid)) - .text("成功一换一") - .at(user_id=str(sid)) - .text(f"{seconds}秒~") - .send() - ) - - -@cancel_ban.handle() -async def cancel_ban_handle(bot: Bot, ev: GroupMessageEvent): - if not await check_manage(bot, ev): - await UniMessage.text("权限不足").send() - return - uid = ev.user_id - gid = ev.group_id - if has_at_all(ev): - await group_silence(bot, ev, gid, False) - return - sid = get_at_id(ev) - if sid is None: - await UniMessage.text("请@需要摘口球的群员哦w").send() - return - await member_silence(bot, ev, uid, sid, gid, "0", silent=False) - - -@ban_all.handle() -async def ban_all_handle(bot: Bot, ev: GroupMessageEvent): - if not await check_manage(bot, ev): - await UniMessage.text("权限不足").send() - return - await group_silence(bot, ev, ev.group_id, True) - - -@cancel_ban_all.handle() -async def cancel_ban_all_handle(bot: Bot, ev: GroupMessageEvent): - if not await check_manage(bot, ev): - await UniMessage.text("权限不足").send() - return - await group_silence(bot, ev, ev.group_id, False) - - -@sleep_8h.handle() -async def sleep_8h_handle(bot: Bot, ev: MessageEvent): - await silence(bot, ev, 8 * 60 * 60) - - -@tea.handle() -async def tea_handle(bot: Bot, ev: MessageEvent): - base = 0 if "午" in ev.plain_text else 5 * 60 * 60 - length = len(ev.plain_text) - sleep_time = base + round( - math.sqrt(length) * 60 * 30 + 60 * random.randint(-15, 15) - ) - await silence(bot, ev, sleep_time) - - -# ============ 头衔 / 名片 / 群名 ============ - -special_title = on_startswith("申请头衔") -del_special_title = on_fullmatch(("删除头衔", "清除头衔", "收回头衔", "回收头衔")) -card_set = on_startswith(("修改名片", "修改群名片", "设置名片", "设置群名片")) -set_group_name = on_startswith(("修改群名", "设置群名")) - - -@special_title.handle() -async def special_title_handle(bot: Bot, ev: GroupMessageEvent): - uid = ev.user_id - gid = ev.group_id - title = strip_prefix(ev.message.extract_plain_text(), ("申请头衔",)) - sid = get_at_id(ev) or uid - await title_get(bot, ev, uid, sid, gid, title) - - -# go-cqhttp似乎暂时不支持收回专属头衔... -@del_special_title.handle() -async def del_special_title_handle(bot: Bot, ev: GroupMessageEvent): - uid = ev.user_id - gid = ev.group_id - sid = get_at_id(ev) or uid - await title_get(bot, ev, uid, sid, gid, None) - - -@card_set.handle() -async def card_set_handle(bot: Bot, ev: GroupMessageEvent): - uid = ev.user_id - gid = ev.group_id - card_text = strip_prefix( - ev.message.extract_plain_text(), ("修改名片", "修改群名片", "设置名片", "设置群名片") - ) - sid = get_at_id(ev) or uid - await card_edit(bot, ev, uid, sid, gid, card_text) - - -@set_group_name.handle() -async def set_group_name_handle(bot: Bot, ev: GroupMessageEvent): - if not await check_manage(bot, ev): - await UniMessage.text("权限不足").send() - return - gid = ev.group_id - name_text = strip_prefix(ev.message.extract_plain_text(), ("修改群名", "设置群名")) - await group_name(bot, ev, gid, name_text) - - -# ============ 龙王 ============ - -whois_dragon = on_fullmatch(("谁是龙王", "迫害龙王", "龙王是谁")) -dragon_list = on_fullmatch(("龙王榜", "龙王排行", "龙王排行榜", "龙王榜单")) - - -@whois_dragon.handle() -async def whois_dragon_handle(bot: Bot, ev: GroupMessageEvent): - gid = ev.group_id - self_info = await self_member_info(bot, gid) - sid = self_info["user_id"] - ta_info = await honor_info(bot, gid, "talkative") - if not ta_info or not ta_info.get("current_talkative"): - await UniMessage.text("本群没有开启龙王标志哦~").send() - return - dk = ta_info["current_talkative"]["user_id"] - if sid == dk: - pic = image_to_base64(IMG_DIR / "dk_is_me.jpg") - await ( - UniMessage.text("你们这群丢人玩意,龙王怎么又是我\n") - .image(url=pic) - .send() - ) - else: - action = random.choice(["龙王出来挨透", "龙王出来喷水"]) - dk_avatar = ta_info["current_talkative"]["avatar"] + "640" + f"&t={dk}" - await ( - UniMessage.at(user_id=str(dk)) - .text(f"\n{action}\n") - .image(url=dk_avatar) - .send() - ) - - -@dragon_list.handle() -async def dragon_list_handle(bot: Bot, ev: GroupMessageEvent): - gid = ev.group_id - ta_info = await honor_info(bot, gid, "talkative") - if not ta_info or not ta_info.get("talkative_list"): - await UniMessage.text("本群暂时没有龙王数据哦~").send() - return - dragon_king_list_info = ta_info["talkative_list"] - - # 处理description和nickname关系 - dkdir = {} - for item in dragon_king_list_info: - user_id = item["user_id"] - nickname = item["nickname"] - description = item["description"] - temp = re.findall(r"\d+", description) - - # 累计获得龙王的次数 - dragon_king_days = int(temp[0]) - # 连续获得龙王 - dragon_king_days_continuous = int(temp[1]) - dkdir[nickname] = { - "user_id": user_id, - "days_max": dragon_king_days, - "days_contin": dragon_king_days_continuous, - } - # 瞎写的排序 - dkdir_sorted = sorted(dkdir.items(), key=lambda d: d[1]["days_max"], reverse=True) - dkk = dkdir_sorted[0][1]["user_id"] - msg = UniMessage.text(f"本群获得龙王次数最多的是:\n{dkdir_sorted[0][0]}\n") - dk_avatar = f"http://q1.qlogo.cn/g?b=qq&nk={dkk}&s=5" - msg += UniMessage.image(url=dk_avatar) - msg += UniMessage.text("\n本群龙王榜\n") - for i, it in enumerate(dkdir_sorted[:5]): - _nickname = it[0] - _days_max = it[1]["days_max"] - _days_contin = it[1]["days_contin"] - msg += UniMessage.text( - f"第{i + 1}名:{_nickname},共{_days_max}次,最长连续{_days_contin}天获得龙王\n" - ) - await msg.send() - - -# ============ 视频下载 ============ - -down_video = on_startswith("/video") - - -@down_video.handle() -async def down_video_handle(bot: Bot, ev: GroupMessageEvent): - url = ev.message.extract_plain_text().removeprefix("/video").strip() - if not url: - return - match = re.match(r"https?:/{2}\w.+$", url) - if not match: - await UniMessage.text("参数不合法").send() - return - - timespan = int(time.time()) - filename = f"{timespan}" - file = TEMP_DIR / f"{filename}.mp4" - fileabs = str(file) - cover = TEMP_DIR / f"{filename}.mp4.jpg" - - TEMP_DIR.mkdir(parents=True, exist_ok=True) - try: - info = await asyncio.to_thread(get_video_info, url) - match = re.search(r"MPEG-4 video(.*)\s*Size:(.*)MiB", info) - if not match: - await UniMessage.text("参数不正确").send() - return - info_type = match.group(1).strip() - if info_type != "(video/mp4)": - await UniMessage.text("未找到视频信息").send() - return - info_size = match.group(2).strip() - if not is_number(info_size): - await UniMessage.text("无法获取视频大小").send() - return - size = float(info_size) - if size >= 6.0: - await UniMessage.text("视频体积过大").send() - return - - await UniMessage.text("正在发送...").send() - await asyncio.to_thread(download_video, url, TEMP_DIR, filename) - except Exception as e: - logger.error(e) - await UniMessage.text("获取视频失败了").send() - file.unlink(missing_ok=True) - cover.unlink(missing_ok=True) - return - - try: - await local_video(f"file:///{fileabs}").send() - except Exception: - await UniMessage.text("发送失败了").send() - file.unlink(missing_ok=True) - cover.unlink(missing_ok=True) - - -# ============ 病毒消息拦截 ============ - -fuck_xxs = on_message(rule=is_type(GroupMessageEvent), block=False) - - -@fuck_xxs.handle() -async def fuck_xxs_handle(bot: Bot, ev: GroupMessageEvent): - for m in ev.message: - if m.type == "json" and '"app":"com.tencent.autoreply"' in m.data.get( - "data", "" - ): - await bot.delete_msg(message_id=ev.message_id) - await UniMessage.text( - "这是onse病毒码,会获取到你手机的xxs,然后发起攻击...以下省略6行需要全文背诵的金句" - ).send() - return diff --git a/hexi/plugins/nonebot_plugin_group_tools/handlers/management/__init__.py b/hexi/plugins/nonebot_plugin_group_tools/handlers/management/__init__.py new file mode 100644 index 0000000..5f49000 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_group_tools/handlers/management/__init__.py @@ -0,0 +1,3 @@ +"""管理类触发(handlers/management)。""" + +from . import admin, antivirus, ban, dragon, title, video # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_group_tools/handlers/management/admin.py b/hexi/plugins/nonebot_plugin_group_tools/handlers/management/admin.py new file mode 100644 index 0000000..64b6f7d --- /dev/null +++ b/hexi/plugins/nonebot_plugin_group_tools/handlers/management/admin.py @@ -0,0 +1,50 @@ +"""群管理工具 —— 管理员与公告。""" + +from __future__ import annotations + +from nonebot import on_startswith, require +from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent +from nonebot_plugin_alconna import UniMessage + +from ...utils.permissions import check_perm + +require("nonebot_plugin_alconna") + +set_admin = on_startswith("设置管理员") +unset_admin = on_startswith("取消管理员") +set_group_notice = on_startswith("设置群公告") + + +@set_admin.handle() +async def set_admin_handle(bot: Bot, ev: GroupMessageEvent): + if not await check_perm(bot, ev): + return + for seg in ev.message: + if seg.type == "at" and seg.data.get("qq") != "all": + await bot.set_group_admin( + group_id=ev.group_id, user_id=int(seg.data["qq"]), enable=True + ) + await UniMessage.text("我好了").send() + + +@unset_admin.handle() +async def unset_admin_handle(bot: Bot, ev: GroupMessageEvent): + if not await check_perm(bot, ev): + return + for seg in ev.message: + if seg.type == "at" and seg.data.get("qq") != "all": + await bot.set_group_admin( + group_id=ev.group_id, user_id=int(seg.data["qq"]), enable=False + ) + await UniMessage.text("我好了").send() + + +@set_group_notice.handle() +async def set_group_notice_handle(bot: Bot, ev: GroupMessageEvent): + content = ev.message.extract_plain_text().removeprefix("设置群公告").strip() + if not content: + return + if not await check_perm(bot, ev): + return + await bot.call_api("_send_group_notice", group_id=ev.group_id, content=content) + await UniMessage.text("我好了").send() diff --git a/hexi/plugins/nonebot_plugin_group_tools/handlers/management/antivirus.py b/hexi/plugins/nonebot_plugin_group_tools/handlers/management/antivirus.py new file mode 100644 index 0000000..a99ff96 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_group_tools/handlers/management/antivirus.py @@ -0,0 +1,25 @@ +"""群管理工具 —— 病毒消息拦截。""" + +from __future__ import annotations + +from nonebot import on_message, require +from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent +from nonebot.rule import is_type +from nonebot_plugin_alconna import UniMessage + +require("nonebot_plugin_alconna") + +fuck_xxs = on_message(rule=is_type(GroupMessageEvent), block=False) + + +@fuck_xxs.handle() +async def fuck_xxs_handle(bot: Bot, ev: GroupMessageEvent): + for m in ev.message: + if m.type == "json" and '"app":"com.tencent.autoreply"' in m.data.get( + "data", "" + ): + await bot.delete_msg(message_id=ev.message_id) + await UniMessage.text( + "这是onse病毒码,会获取到你手机的xxs,然后发起攻击...以下省略6行需要全文背诵的金句" + ).send() + return diff --git a/hexi/plugins/nonebot_plugin_group_tools/handlers/management/ban.py b/hexi/plugins/nonebot_plugin_group_tools/handlers/management/ban.py new file mode 100644 index 0000000..e564461 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_group_tools/handlers/management/ban.py @@ -0,0 +1,145 @@ +"""群管理工具 —— 禁言相关。""" + +from __future__ import annotations + +import math +import random + +from nonebot import logger, on_fullmatch, on_message, on_regex, on_startswith, require +from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent, MessageEvent +from nonebot.rule import Rule, is_type +from nonebot_plugin_alconna import UniMessage + +from hexi.plugins.nonebot_plugin_hexi_core.custom_utils import check_manage + +from ...services.moderation import group_silence, member_silence, silence +from ...utils.message import get_at_id, has_at_all +from ...utils.permissions import check_perm +from ...utils.text import parse_seconds, strip_prefix + +require("nonebot_plugin_alconna") + + +def _is_ban_cmd(event: GroupMessageEvent) -> bool: + text = event.message.extract_plain_text() + return text.startswith("禁言") and not text.startswith("禁言一下") + + +ban_user = on_message(rule=Rule(_is_ban_cmd) & is_type(GroupMessageEvent), block=True) +ban_member = on_startswith(("来发口球", "塞口球", "禁言一下")) +one_for_one = on_startswith("极限一换一") +cancel_ban = on_startswith(("解除口球", "取消口球", "摘口球", "脱口球", "取消禁言", "解除禁言", "解禁")) +ban_all = on_fullmatch(("全员口球", "全员禁言")) +cancel_ban_all = on_fullmatch(("取消全员口球", "取消全员禁言", "解除全员口球", "解除全员禁言")) +sleep_8h = on_fullmatch(("睡眠套餐", "休眠套餐", "精致睡眠", "来一份精致睡眠套餐")) +tea = on_regex(r"(来|來)(.*(份|个)(.*)(睡|茶)(.*))套餐") + + +@ban_user.handle() +async def ban_user_handle(bot: Bot, ev: GroupMessageEvent): + if not await check_perm(bot, ev, silent=True): + return + msg = ev.message.extract_plain_text().removeprefix("禁言").strip() + at_seg = next( + (seg for seg in ev.message if seg.type == "at" and seg.data.get("qq") != "all"), + None, + ) + if not at_seg: + return + try: + uid = int(at_seg.data["qq"]) + minutes = 1 if not msg else int(msg) + await bot.set_group_ban(group_id=ev.group_id, user_id=uid, duration=minutes * 60) + await UniMessage.text("我好了").send() + except Exception as ex: + logger.error(ex) + + +@ban_member.handle() +async def ban_member_handle(bot: Bot, ev: GroupMessageEvent): + uid = ev.user_id + gid = ev.group_id + duration_text = strip_prefix( + ev.message.extract_plain_text(), ("来发口球", "塞口球", "禁言一下") + ) + if not duration_text: + duration_text = "30" + if has_at_all(ev): + await group_silence(bot, ev, gid, True) + return + sid = get_at_id(ev) or uid + await member_silence(bot, ev, uid, sid, gid, duration_text, silent=False) + + +@one_for_one.handle() +async def one_for_one_handle(bot: Bot, ev: GroupMessageEvent): + uid = ev.user_id + gid = ev.group_id + duration_text = strip_prefix(ev.message.extract_plain_text(), ("极限一换一",)) + if has_at_all(ev): + await UniMessage.text("人干事?").send(at_sender=True) + await member_silence(bot, ev, uid, uid, gid, "180", silent=False) + return + seconds = parse_seconds(duration_text) + if seconds is None: + await UniMessage.text("请输入正确时长~").send(at_sender=True) + return + if seconds > 30: + await UniMessage.text("时长不可大于30秒哟~").send(at_sender=True) + return + sid = get_at_id(ev) or uid + await member_silence(bot, ev, uid, sid, gid, str(seconds), silent=True) + await member_silence(bot, ev, uid, uid, gid, str(seconds), silent=True) + await ( + UniMessage.at(user_id=str(uid)) + .text("成功一换一") + .at(user_id=str(sid)) + .text(f"{seconds}秒~") + .send() + ) + + +@cancel_ban.handle() +async def cancel_ban_handle(bot: Bot, ev: GroupMessageEvent): + if not await check_manage(bot, ev): + await UniMessage.text("权限不足").send() + return + uid = ev.user_id + gid = ev.group_id + if has_at_all(ev): + await group_silence(bot, ev, gid, False) + return + sid = get_at_id(ev) + if sid is None: + await UniMessage.text("请@需要摘口球的群员哦w").send() + return + await member_silence(bot, ev, uid, sid, gid, "0", silent=False) + + +@ban_all.handle() +async def ban_all_handle(bot: Bot, ev: GroupMessageEvent): + if not await check_manage(bot, ev): + await UniMessage.text("权限不足").send() + return + await group_silence(bot, ev, ev.group_id, True) + + +@cancel_ban_all.handle() +async def cancel_ban_all_handle(bot: Bot, ev: GroupMessageEvent): + if not await check_manage(bot, ev): + await UniMessage.text("权限不足").send() + return + await group_silence(bot, ev, ev.group_id, False) + + +@sleep_8h.handle() +async def sleep_8h_handle(bot: Bot, ev: MessageEvent): + await silence(bot, ev, 8 * 60 * 60) + + +@tea.handle() +async def tea_handle(bot: Bot, ev: MessageEvent): + base = 0 if "午" in ev.plain_text else 5 * 60 * 60 + length = len(ev.plain_text) + sleep_time = base + round(math.sqrt(length) * 60 * 30 + 60 * random.randint(-15, 15)) + await silence(bot, ev, sleep_time) diff --git a/hexi/plugins/nonebot_plugin_group_tools/handlers/management/dragon.py b/hexi/plugins/nonebot_plugin_group_tools/handlers/management/dragon.py new file mode 100644 index 0000000..17df8c2 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_group_tools/handlers/management/dragon.py @@ -0,0 +1,84 @@ +"""群管理工具 —— 龙王。""" + +from __future__ import annotations + +import random +import re + +from nonebot import on_fullmatch, require +from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent +from nonebot_plugin_alconna import UniMessage + +from ...constants import IMG_DIR +from ...utils.media import image_to_base64 +from ...utils.permissions import honor_info, self_member_info + +require("nonebot_plugin_alconna") + +whois_dragon = on_fullmatch(("谁是龙王", "迫害龙王", "龙王是谁")) +dragon_list = on_fullmatch(("龙王榜", "龙王排行", "龙王排行榜", "龙王榜单")) + + +@whois_dragon.handle() +async def whois_dragon_handle(bot: Bot, ev: GroupMessageEvent): + gid = ev.group_id + self_info = await self_member_info(bot, gid) + sid = self_info["user_id"] + ta_info = await honor_info(bot, gid, "talkative") + if not ta_info or not ta_info.get("current_talkative"): + await UniMessage.text("本群没有开启龙王标志哦~").send() + return + dk = ta_info["current_talkative"]["user_id"] + if sid == dk: + pic = image_to_base64(IMG_DIR / "dk_is_me.jpg") + await ( + UniMessage.text("你们这群丢人玩意,龙王怎么又是我\n") + .image(url=pic) + .send() + ) + else: + action = random.choice(["龙王出来挨透", "龙王出来喷水"]) + dk_avatar = ta_info["current_talkative"]["avatar"] + "640" + f"&t={dk}" + await ( + UniMessage.at(user_id=str(dk)) + .text(f"\n{action}\n") + .image(url=dk_avatar) + .send() + ) + + +@dragon_list.handle() +async def dragon_list_handle(bot: Bot, ev: GroupMessageEvent): + gid = ev.group_id + ta_info = await honor_info(bot, gid, "talkative") + if not ta_info or not ta_info.get("talkative_list"): + await UniMessage.text("本群暂时没有龙王数据哦~").send() + return + dragon_king_list_info = ta_info["talkative_list"] + dkdir = {} + for item in dragon_king_list_info: + user_id = item["user_id"] + nickname = item["nickname"] + description = item["description"] + temp = re.findall(r"\d+", description) + dragon_king_days = int(temp[0]) + dragon_king_days_continuous = int(temp[1]) + dkdir[nickname] = { + "user_id": user_id, + "days_max": dragon_king_days, + "days_contin": dragon_king_days_continuous, + } + dkdir_sorted = sorted(dkdir.items(), key=lambda d: d[1]["days_max"], reverse=True) + dkk = dkdir_sorted[0][1]["user_id"] + msg = UniMessage.text(f"本群获得龙王次数最多的是:\n{dkdir_sorted[0][0]}\n") + dk_avatar = f"http://q1.qlogo.cn/g?b=qq&nk={dkk}&s=5" + msg += UniMessage.image(url=dk_avatar) + msg += UniMessage.text("\n本群龙王榜\n") + for i, it in enumerate(dkdir_sorted[:5]): + _nickname = it[0] + _days_max = it[1]["days_max"] + _days_contin = it[1]["days_contin"] + msg += UniMessage.text( + f"第{i + 1}名:{_nickname},共{_days_max}次,最长连续{_days_contin}天获得龙王\n" + ) + await msg.send() diff --git a/hexi/plugins/nonebot_plugin_group_tools/handlers/management/title.py b/hexi/plugins/nonebot_plugin_group_tools/handlers/management/title.py new file mode 100644 index 0000000..fc2dfd9 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_group_tools/handlers/management/title.py @@ -0,0 +1,58 @@ +"""群管理工具 —— 头衔 / 名片 / 群名。""" + +from __future__ import annotations + +from nonebot import on_fullmatch, on_startswith, require +from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent +from nonebot_plugin_alconna import UniMessage + +from hexi.plugins.nonebot_plugin_hexi_core.custom_utils import check_manage + +from ...services.profile import card_edit, group_name, title_get +from ...utils.message import get_at_id +from ...utils.text import strip_prefix + +require("nonebot_plugin_alconna") + +special_title = on_startswith("申请头衔") +del_special_title = on_fullmatch(("删除头衔", "清除头衔", "收回头衔", "回收头衔")) +card_set = on_startswith(("修改名片", "修改群名片", "设置名片", "设置群名片")) +set_group_name = on_startswith(("修改群名", "设置群名")) + + +@special_title.handle() +async def special_title_handle(bot: Bot, ev: GroupMessageEvent): + uid = ev.user_id + gid = ev.group_id + title = strip_prefix(ev.message.extract_plain_text(), ("申请头衔",)) + sid = get_at_id(ev) or uid + await title_get(bot, ev, uid, sid, gid, title) + + +@del_special_title.handle() +async def del_special_title_handle(bot: Bot, ev: GroupMessageEvent): + uid = ev.user_id + gid = ev.group_id + sid = get_at_id(ev) or uid + await title_get(bot, ev, uid, sid, gid, None) + + +@card_set.handle() +async def card_set_handle(bot: Bot, ev: GroupMessageEvent): + uid = ev.user_id + gid = ev.group_id + card_text = strip_prefix( + ev.message.extract_plain_text(), ("修改名片", "修改群名片", "设置名片", "设置群名片") + ) + sid = get_at_id(ev) or uid + await card_edit(bot, ev, uid, sid, gid, card_text) + + +@set_group_name.handle() +async def set_group_name_handle(bot: Bot, ev: GroupMessageEvent): + if not await check_manage(bot, ev): + await UniMessage.text("权限不足").send() + return + gid = ev.group_id + name_text = strip_prefix(ev.message.extract_plain_text(), ("修改群名", "设置群名")) + await group_name(bot, ev, gid, name_text) diff --git a/hexi/plugins/nonebot_plugin_group_tools/handlers/management/video.py b/hexi/plugins/nonebot_plugin_group_tools/handlers/management/video.py new file mode 100644 index 0000000..d54523d --- /dev/null +++ b/hexi/plugins/nonebot_plugin_group_tools/handlers/management/video.py @@ -0,0 +1,71 @@ +"""群管理工具 —— 视频下载。""" + +from __future__ import annotations + +import asyncio +import re +import time + +from nonebot import logger, on_startswith, require +from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent +from nonebot_plugin_alconna import UniMessage + +from ...constants import TEMP_DIR +from ...services.video import download_video, get_video_info, local_video +from ...utils.text import is_number + +require("nonebot_plugin_alconna") + +down_video = on_startswith("/video") + + +@down_video.handle() +async def down_video_handle(bot: Bot, ev: GroupMessageEvent): + url = ev.message.extract_plain_text().removeprefix("/video").strip() + if not url: + return + match = re.match(r"https?:/{2}w.+$", url) + if not match: + await UniMessage.text("参数不合法").send() + return + + timespan = int(time.time()) + filename = f"{timespan}" + file = TEMP_DIR / f"{filename}.mp4" + fileabs = str(file) + cover = TEMP_DIR / f"{filename}.mp4.jpg" + + TEMP_DIR.mkdir(parents=True, exist_ok=True) + try: + info = await asyncio.to_thread(get_video_info, url) + match = re.search(r"MPEG-4 video(.*)s*Size:(.*)MiB", info) + if not match: + await UniMessage.text("参数不正确").send() + return + info_type = match.group(1).strip() + if info_type != "(video/mp4)": + await UniMessage.text("未找到视频信息").send() + return + info_size = match.group(2).strip() + if not is_number(info_size): + await UniMessage.text("无法获取视频大小").send() + return + size = float(info_size) + if size >= 6.0: + await UniMessage.text("视频体积过大").send() + return + await UniMessage.text("正在发送...").send() + await asyncio.to_thread(download_video, url, TEMP_DIR, filename) + except Exception as e: + logger.error(e) + await UniMessage.text("获取视频失败了").send() + file.unlink(missing_ok=True) + cover.unlink(missing_ok=True) + return + + try: + await local_video(f"file:///{fileabs}").send() + except Exception: + await UniMessage.text("发送失败了").send() + file.unlink(missing_ok=True) + cover.unlink(missing_ok=True) diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/H~@%PMGOFZNLLE@3I~%@4N9.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/H~@%PMGOFZNLLE@3I~%@4N9.png deleted file mode 100644 index 85a2e04..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/H~@%PMGOFZNLLE@3I~%@4N9.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/anti.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/anti.jpg deleted file mode 100644 index 2afb52b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/anti.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/antiqks.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/antiqks.jpg deleted file mode 100644 index 2afb52b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/antiqks.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/gadget/star-1.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/gadget/star-1.png deleted file mode 100644 index 3b7e03f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/gadget/star-1.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/gadget/star.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/gadget/star.png deleted file mode 100644 index cafac30..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/gadget/star.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/gadget/star_disabled.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/gadget/star_disabled.png deleted file mode 100644 index 4914bd0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/gadget/star_disabled.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_1000.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_1000.png deleted file mode 100644 index 954d274..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_1000.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10000.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10000.png deleted file mode 100644 index 39ac0f3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10000.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10001.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10001.png deleted file mode 100644 index b34e7b3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10001.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10002.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10002.png deleted file mode 100644 index 9051f94..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10002.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10003.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10003.png deleted file mode 100644 index f221945..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10003.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10004.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10004.png deleted file mode 100644 index 9ac9d56..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10004.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10005.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10005.png deleted file mode 100644 index 90a4fb2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10005.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10006.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10006.png deleted file mode 100644 index 75d9e8d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10006.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10007.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10007.png deleted file mode 100644 index b4596d3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10007.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10008.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10008.png deleted file mode 100644 index 4195dde..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10008.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10009.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10009.png deleted file mode 100644 index b2eab49..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10009.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10010.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10010.png deleted file mode 100644 index 01554be..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10010.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10011.png deleted file mode 100644 index bcf2831..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10012.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10012.png deleted file mode 100644 index 6e0b97c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10012.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10013.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10013.png deleted file mode 100644 index bb7d2ca..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10013.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10014.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10014.png deleted file mode 100644 index bb8c0a3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10014.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10015.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10015.png deleted file mode 100644 index a2f1ab1..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10015.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10016.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10016.png deleted file mode 100644 index 26f6a15..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10016.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10017.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10017.png deleted file mode 100644 index 0aa9ad2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10017.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10018.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10018.png deleted file mode 100644 index afc3986..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10018.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10019.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10019.png deleted file mode 100644 index a7ac351..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10019.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10020.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10020.png deleted file mode 100644 index 3665bc8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10020.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10021.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10021.png deleted file mode 100644 index 77d7598..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10021.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10022.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10022.png deleted file mode 100644 index 284a0e4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10022.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10023.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10023.png deleted file mode 100644 index 75b0480..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10023.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10024.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10024.png deleted file mode 100644 index bfedcc0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10024.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10025.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10025.png deleted file mode 100644 index 130ad0a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10025.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10026.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10026.png deleted file mode 100644 index 376ce0e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10026.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10027.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10027.png deleted file mode 100644 index c57f12e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10027.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10028.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10028.png deleted file mode 100644 index 7b600a0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10028.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10029.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10029.png deleted file mode 100644 index abfe26d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10029.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10030.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10030.png deleted file mode 100644 index 39ced8b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10030.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10031.png deleted file mode 100644 index 10bd293..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10032.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10032.png deleted file mode 100644 index 3d687c6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10032.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10033.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10033.png deleted file mode 100644 index 938ceff..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10033.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10034.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10034.png deleted file mode 100644 index 2e6dda1..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10034.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10035.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10035.png deleted file mode 100644 index eaa329b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10035.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10036.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10036.png deleted file mode 100644 index 65750eb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10036.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10037.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10037.png deleted file mode 100644 index cc4640d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10037.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10038.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10038.png deleted file mode 100644 index d8d00c5..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10038.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10039.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10039.png deleted file mode 100644 index b637e41..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10039.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10040.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10040.png deleted file mode 100644 index ea1322e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10040.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10041.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10041.png deleted file mode 100644 index f780cd0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10041.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10042.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10042.png deleted file mode 100644 index 865c1f2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10042.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10043.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10043.png deleted file mode 100644 index e83ba1c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10043.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10044.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10044.png deleted file mode 100644 index f824ce4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10044.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10045.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10045.png deleted file mode 100644 index 355d7a0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10045.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10046.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10046.png deleted file mode 100644 index 3e414d6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10046.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10047.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10047.png deleted file mode 100644 index d3baef4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10047.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10048.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10048.png deleted file mode 100644 index 0132639..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10048.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10049.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10049.png deleted file mode 100644 index 9077919..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10049.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10050.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10050.png deleted file mode 100644 index b0259df..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10050.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10051.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10051.png deleted file mode 100644 index 13098ca..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10051.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10052.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10052.png deleted file mode 100644 index 6004173..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10052.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10053.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10053.png deleted file mode 100644 index 313b4e8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10053.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10054.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10054.png deleted file mode 100644 index 4f2e40b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10054.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10055.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10055.png deleted file mode 100644 index 890a44a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10055.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10056.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10056.png deleted file mode 100644 index e36a372..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10056.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10057.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10057.png deleted file mode 100644 index d17c785..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10057.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10058.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10058.png deleted file mode 100644 index 47ef99c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10058.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10059.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10059.png deleted file mode 100644 index 84a954f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10059.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10060.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10060.png deleted file mode 100644 index 6022634..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10060.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10061.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10061.png deleted file mode 100644 index 25859e2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10061.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10062.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10062.png deleted file mode 100644 index c08c411..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10062.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10063.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10063.png deleted file mode 100644 index 18fbb15..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10063.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10064.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10064.png deleted file mode 100644 index ba0acfb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10064.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10065.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10065.png deleted file mode 100644 index 5ad2762..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10065.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10066.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10066.png deleted file mode 100644 index 7ec1fd1..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10066.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10067.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10067.png deleted file mode 100644 index 4bc9aad..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10067.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10068.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10068.png deleted file mode 100644 index 060fd42..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10068.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10069.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10069.png deleted file mode 100644 index 7fa67a1..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10069.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10070.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10070.png deleted file mode 100644 index 3ac5e00..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10070.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10071.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10071.png deleted file mode 100644 index 892b76e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10071.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10072.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10072.png deleted file mode 100644 index abdf260..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10072.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10073.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10073.png deleted file mode 100644 index b295d09..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10073.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10074.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10074.png deleted file mode 100644 index 68d408e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10074.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10075.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10075.png deleted file mode 100644 index 6a70ae8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10075.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10076.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10076.png deleted file mode 100644 index 4dde0f0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10076.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10077.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10077.png deleted file mode 100644 index 90bad57..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10077.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10078.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10078.png deleted file mode 100644 index adb726d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10078.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10079.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10079.png deleted file mode 100644 index 9ab6ec6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10079.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10080.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10080.png deleted file mode 100644 index e6b672b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10080.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10081.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10081.png deleted file mode 100644 index 32fc74e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10081.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10082.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10082.png deleted file mode 100644 index aacd9e3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10082.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10083.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10083.png deleted file mode 100644 index 97497c8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10083.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10084.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10084.png deleted file mode 100644 index 0460535..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10084.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10085.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10085.png deleted file mode 100644 index 71e3588..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10085.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10086.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10086.png deleted file mode 100644 index 56e4cc8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10086.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10087.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10087.png deleted file mode 100644 index 205488e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_10087.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13000.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13000.png deleted file mode 100644 index 0b8bf27..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13000.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13001.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13001.png deleted file mode 100644 index 9dc40af..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13001.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13002.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13002.png deleted file mode 100644 index 74aad46..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13002.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13003.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13003.png deleted file mode 100644 index b8aa4fb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13003.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13004.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13004.png deleted file mode 100644 index 07e1317..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13004.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13005.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13005.png deleted file mode 100644 index 598af22..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13005.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13006.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13006.png deleted file mode 100644 index 69de6c6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13006.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13007.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13007.png deleted file mode 100644 index 829f8fc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13007.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13008.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13008.png deleted file mode 100644 index 66e240b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13008.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13009.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13009.png deleted file mode 100644 index 2b0f3c7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13009.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13010.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13010.png deleted file mode 100644 index 82cfb50..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13010.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13011.png deleted file mode 100644 index 6bdefc9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13012.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13012.png deleted file mode 100644 index 857ede3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13012.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13013.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13013.png deleted file mode 100644 index f0426e0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_13013.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16000.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16000.png deleted file mode 100644 index 29d10a5..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16000.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16001.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16001.png deleted file mode 100644 index bfc9ac0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16001.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16002.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16002.png deleted file mode 100644 index 7b24491..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16002.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16003.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16003.png deleted file mode 100644 index f273a41..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16003.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16004.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16004.png deleted file mode 100644 index a531601..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16004.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16005.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16005.png deleted file mode 100644 index 8f8eb14..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16005.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16006.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16006.png deleted file mode 100644 index 27aa2ee..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16006.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16007.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16007.png deleted file mode 100644 index 3b71411..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16007.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16008.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16008.png deleted file mode 100644 index a1f8070..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16008.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16009.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16009.png deleted file mode 100644 index a82c2df..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16009.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16010.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16010.png deleted file mode 100644 index c7a0605..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16010.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16011.png deleted file mode 100644 index 12aeb65..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16012.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16012.png deleted file mode 100644 index 033b148..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16012.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16013.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16013.png deleted file mode 100644 index 6b56966..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16013.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16014.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16014.png deleted file mode 100644 index 9a19ac0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_16014.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20000.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20000.png deleted file mode 100644 index 3004de3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20000.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20001.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20001.png deleted file mode 100644 index 9da4b2a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20001.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20002.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20002.png deleted file mode 100644 index 6ed71bb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20002.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20003.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20003.png deleted file mode 100644 index 947faca..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20003.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20004.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20004.png deleted file mode 100644 index 5af8bf0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20004.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20005.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20005.png deleted file mode 100644 index aa2057d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20005.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20006.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20006.png deleted file mode 100644 index 7c7987b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20006.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20007.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20007.png deleted file mode 100644 index 02f7e82..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20007.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20008.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20008.png deleted file mode 100644 index 76b1b24..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20008.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20009.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20009.png deleted file mode 100644 index 1a06849..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20009.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20010.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20010.png deleted file mode 100644 index d8ac4cc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20010.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20011.png deleted file mode 100644 index 7703785..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20012.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20012.png deleted file mode 100644 index 309ba62..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20012.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20013.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20013.png deleted file mode 100644 index 78d7542..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20013.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20014.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20014.png deleted file mode 100644 index 3cfd7a7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20014.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20015.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20015.png deleted file mode 100644 index 5e1c812..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20015.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20016.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20016.png deleted file mode 100644 index 45583cf..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20016.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20017.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20017.png deleted file mode 100644 index 756c659..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20017.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20018.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20018.png deleted file mode 100644 index 5b56bff..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20018.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20019.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20019.png deleted file mode 100644 index d4f26da..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20019.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20020.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20020.png deleted file mode 100644 index 4679311..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20020.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20021.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20021.png deleted file mode 100644 index d8de3ea..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20021.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20022.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20022.png deleted file mode 100644 index 1596138..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20022.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20023.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20023.png deleted file mode 100644 index 13ea4e7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20023.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20024.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20024.png deleted file mode 100644 index 5b0ff2e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20024.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20025.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20025.png deleted file mode 100644 index 8003976..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20025.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20026.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20026.png deleted file mode 100644 index 4b80b18..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20026.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20027.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20027.png deleted file mode 100644 index 13f69cb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20027.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20028.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20028.png deleted file mode 100644 index 0b8a195..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20028.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20029.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20029.png deleted file mode 100644 index fadb115..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20029.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20030.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20030.png deleted file mode 100644 index 0045232..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20030.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20031.png deleted file mode 100644 index f67ba57..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20032.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20032.png deleted file mode 100644 index 742f6c3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20032.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20033.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20033.png deleted file mode 100644 index 46582e3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_20033.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23000.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23000.png deleted file mode 100644 index 4a4c04f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23000.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23001.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23001.png deleted file mode 100644 index 834acc4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23001.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23002.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23002.png deleted file mode 100644 index ca466bf..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23002.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23003.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23003.png deleted file mode 100644 index 803c1b4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23003.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23004.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23004.png deleted file mode 100644 index 13253be..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23004.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23005.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23005.png deleted file mode 100644 index dc40fcf..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23005.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23006.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23006.png deleted file mode 100644 index 3f0d4c7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23006.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23007.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23007.png deleted file mode 100644 index e44db57..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23007.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23008.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23008.png deleted file mode 100644 index 1c9196f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_23008.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26000.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26000.png deleted file mode 100644 index 99f1121..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26000.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26001.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26001.png deleted file mode 100644 index fceca09..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26001.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26002.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26002.png deleted file mode 100644 index c83dcad..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26002.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26003.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26003.png deleted file mode 100644 index f563d9e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26003.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26004.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26004.png deleted file mode 100644 index d9ecea4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26004.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26005.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26005.png deleted file mode 100644 index 9c62fcb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26005.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26006.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26006.png deleted file mode 100644 index 0428535..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26006.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26007.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26007.png deleted file mode 100644 index a4cae07..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26007.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26008.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26008.png deleted file mode 100644 index e767c73..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26008.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26009.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26009.png deleted file mode 100644 index f3b3f7b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26009.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26010.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26010.png deleted file mode 100644 index b275a4a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26010.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26011.png deleted file mode 100644 index 4629355..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/unit/icon_unit_26011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/wiki/student_rank/泳装花子.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/wiki/student_rank/泳装花子.png deleted file mode 100644 index 269aabf..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/bluearchive/wiki/student_rank/泳装花子.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/icon_unit_112931.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/icon_unit_112931.png deleted file mode 100644 index 5e66537..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/icon_unit_112931.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/icon_unit_113731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/icon_unit_113731.png deleted file mode 100644 index cda94e3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/icon_unit_113731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1004511835.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1004511835.jpg deleted file mode 100644 index bac89bd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1004511835.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1005092621.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1005092621.jpg deleted file mode 100644 index af7f850..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1005092621.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1014885965.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1014885965.jpg deleted file mode 100644 index df344c8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1014885965.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1015189293.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1015189293.jpg deleted file mode 100644 index 44c2e03..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1015189293.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1023226162.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1023226162.jpg deleted file mode 100644 index fa92ba8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1023226162.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1024947457.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1024947457.jpg deleted file mode 100644 index 5d5fcec..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1024947457.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1030081969.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1030081969.jpg deleted file mode 100644 index cfc89d6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1030081969.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1031653806.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1031653806.jpg deleted file mode 100644 index edeeb8c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1031653806.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1042413351.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1042413351.jpg deleted file mode 100644 index e6899ae..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1042413351.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1043468471.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1043468471.jpg deleted file mode 100644 index ef19a59..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1043468471.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1044482651.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1044482651.jpg deleted file mode 100644 index e991afc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1044482651.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1044576134.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1044576134.jpg deleted file mode 100644 index c2b3a23..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1044576134.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1047555675.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1047555675.jpg deleted file mode 100644 index c845f47..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1047555675.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1049232495.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1049232495.jpg deleted file mode 100644 index 569452e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1049232495.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1057069677.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1057069677.jpg deleted file mode 100644 index 1aedbce..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1057069677.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1060389942.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1060389942.jpg deleted file mode 100644 index 7b62f73..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1060389942.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1069719537.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1069719537.jpg deleted file mode 100644 index d283859..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1069719537.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1072324725.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1072324725.jpg deleted file mode 100644 index 6da8aa9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1072324725.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1072872877.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1072872877.jpg deleted file mode 100644 index 81c8d62..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1072872877.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1085683272.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1085683272.jpg deleted file mode 100644 index f2c2dd4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1085683272.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1097887063.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1097887063.jpg deleted file mode 100644 index 4501e7b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1097887063.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1115375166.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1115375166.jpg deleted file mode 100644 index 1d7fa6e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1115375166.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1124369490.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1124369490.jpg deleted file mode 100644 index 1272fc7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1124369490.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1124868809.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1124868809.jpg deleted file mode 100644 index ea629f4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1124868809.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1136694448.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1136694448.jpg deleted file mode 100644 index 5a3d917..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1136694448.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1141903494.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1141903494.jpg deleted file mode 100644 index fc28728..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1141903494.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1144746331.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1144746331.jpg deleted file mode 100644 index 0e56705..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1144746331.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1150068242.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1150068242.jpg deleted file mode 100644 index 235e82d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1150068242.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1174701649.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1174701649.jpg deleted file mode 100644 index 4f3f6a7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1174701649.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1191670942.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1191670942.jpg deleted file mode 100644 index 5b1f5da..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1191670942.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1191717937.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1191717937.jpg deleted file mode 100644 index df511f5..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1191717937.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1193866709.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1193866709.jpg deleted file mode 100644 index 1c8de9e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1193866709.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1204707481.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1204707481.jpg deleted file mode 100644 index 954ee3e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1204707481.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1209581401.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1209581401.jpg deleted file mode 100644 index 010ecc5..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1209581401.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1210807886.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1210807886.jpg deleted file mode 100644 index e677408..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1210807886.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1215988576.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1215988576.jpg deleted file mode 100644 index c26b01f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1215988576.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1224737973.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1224737973.jpg deleted file mode 100644 index e91578b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1224737973.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1241261026.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1241261026.jpg deleted file mode 100644 index 2bae6bc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1241261026.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1242525639.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1242525639.jpg deleted file mode 100644 index 996bc51..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1242525639.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1247698498.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1247698498.jpg deleted file mode 100644 index 8926523..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1247698498.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1254535464.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1254535464.jpg deleted file mode 100644 index c7c7c17..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1254535464.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1256390702.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1256390702.jpg deleted file mode 100644 index bb941b7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1256390702.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1257297430.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1257297430.jpg deleted file mode 100644 index a895d2c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1257297430.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1259843337.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1259843337.jpg deleted file mode 100644 index 0b99055..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1259843337.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1269978948.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1269978948.jpg deleted file mode 100644 index a6b7362..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1269978948.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1273632724.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1273632724.jpg deleted file mode 100644 index 9b5007b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1273632724.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1294917696.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1294917696.jpg deleted file mode 100644 index a08e1d6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1294917696.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1321725916.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1321725916.jpg deleted file mode 100644 index 713daed..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1321725916.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1334130524.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1334130524.jpg deleted file mode 100644 index bc28f71..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1334130524.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1339128595.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1339128595.jpg deleted file mode 100644 index 24edcf8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1339128595.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1345589532.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1345589532.jpg deleted file mode 100644 index a23d945..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1345589532.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1356445571.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1356445571.jpg deleted file mode 100644 index fcabb96..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1356445571.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1359883227.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1359883227.jpg deleted file mode 100644 index 33d0c50..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1359883227.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1394333608.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1394333608.jpg deleted file mode 100644 index 1f5793e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1394333608.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1415363827.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1415363827.jpg deleted file mode 100644 index db1a4de..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1415363827.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1418953320.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1418953320.jpg deleted file mode 100644 index f2c2e4d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1418953320.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1422189943.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1422189943.jpg deleted file mode 100644 index 01d6e83..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1422189943.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1425862560.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1425862560.jpg deleted file mode 100644 index 39d84a1..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1425862560.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1454814118.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1454814118.jpg deleted file mode 100644 index daee1f9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1454814118.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1462006618.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1462006618.jpg deleted file mode 100644 index 7f29fdd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1462006618.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1478779903.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1478779903.jpg deleted file mode 100644 index 4281dce..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1478779903.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1521584288.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1521584288.jpg deleted file mode 100644 index 92fa20a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1521584288.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1548245927.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1548245927.jpg deleted file mode 100644 index be81c74..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1548245927.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1584311796.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1584311796.jpg deleted file mode 100644 index 7257751..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1584311796.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/160406838.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/160406838.jpg deleted file mode 100644 index 9b40ae8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/160406838.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1647124293.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1647124293.jpg deleted file mode 100644 index ad4132a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1647124293.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/171469095.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/171469095.jpg deleted file mode 100644 index 713daed..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/171469095.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1719155080.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1719155080.jpg deleted file mode 100644 index 852c3de..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1719155080.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1728046590.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1728046590.jpg deleted file mode 100644 index a4f0f1a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1728046590.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1738148743.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1738148743.jpg deleted file mode 100644 index 75e2104..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1738148743.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1763346489.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1763346489.jpg deleted file mode 100644 index b67fc19..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1763346489.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1796718174.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1796718174.jpg deleted file mode 100644 index 1e5b741..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1796718174.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1816930071.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1816930071.jpg deleted file mode 100644 index a895d2c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1816930071.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1823991302.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1823991302.jpg deleted file mode 100644 index 4103b17..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1823991302.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1825834668.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1825834668.jpg deleted file mode 100644 index 8216e78..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1825834668.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1832472182.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1832472182.jpg deleted file mode 100644 index 7a4ccdf..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1832472182.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1832596584.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1832596584.jpg deleted file mode 100644 index 32d7b81..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1832596584.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1846058388.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1846058388.jpg deleted file mode 100644 index 12b1fc7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1846058388.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/185997462.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/185997462.jpg deleted file mode 100644 index e3698bb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/185997462.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1874073604.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1874073604.jpg deleted file mode 100644 index 843ea01..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1874073604.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1901510232.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1901510232.jpg deleted file mode 100644 index b024def..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1901510232.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/191072540.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/191072540.jpg deleted file mode 100644 index 07bb5b2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/191072540.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1935350790.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1935350790.jpg deleted file mode 100644 index 482fdc9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1935350790.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1983347559.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1983347559.jpg deleted file mode 100644 index 0a05e81..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1983347559.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1987262935.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1987262935.jpg deleted file mode 100644 index b48b658..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/1987262935.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2051218754.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2051218754.jpg deleted file mode 100644 index b67fdf4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2051218754.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2061892856.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2061892856.jpg deleted file mode 100644 index d984c14..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2061892856.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2084848914.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2084848914.jpg deleted file mode 100644 index 869f36d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2084848914.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2090832627.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2090832627.jpg deleted file mode 100644 index 8a3c788..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2090832627.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2169380262.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2169380262.jpg deleted file mode 100644 index 815bb65..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2169380262.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2169571429.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2169571429.jpg deleted file mode 100644 index 480764a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2169571429.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2185247294.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2185247294.jpg deleted file mode 100644 index 6c19f15..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2185247294.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2192326388.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2192326388.jpg deleted file mode 100644 index b04a0cd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2192326388.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2239627890.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2239627890.jpg deleted file mode 100644 index 695494c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2239627890.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2248745386.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2248745386.jpg deleted file mode 100644 index b44ad07..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2248745386.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2248863880.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2248863880.jpg deleted file mode 100644 index 382993b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2248863880.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2369669861.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2369669861.jpg deleted file mode 100644 index 1bdbf46..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2369669861.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2406318045.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2406318045.jpg deleted file mode 100644 index 5fbb560..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2406318045.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2414601352.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2414601352.jpg deleted file mode 100644 index 7c1b437..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2414601352.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2417224603.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2417224603.jpg deleted file mode 100644 index fa5456e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2417224603.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2426120505.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2426120505.jpg deleted file mode 100644 index 94c871e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2426120505.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2428121151.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2428121151.jpg deleted file mode 100644 index e6b5d40..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2428121151.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/243118462.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/243118462.jpg deleted file mode 100644 index 07d22ef..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/243118462.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2433640468.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2433640468.jpg deleted file mode 100644 index 9282571..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2433640468.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2445055638.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2445055638.jpg deleted file mode 100644 index 8342a1d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2445055638.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/247248275.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/247248275.jpg deleted file mode 100644 index 9473e5c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/247248275.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2475650896.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2475650896.jpg deleted file mode 100644 index a9659a7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2475650896.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/252923735.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/252923735.jpg deleted file mode 100644 index 33046b9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/252923735.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/25538927.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/25538927.jpg deleted file mode 100644 index e765fb1..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/25538927.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2567322625.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2567322625.jpg deleted file mode 100644 index e1b0313..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2567322625.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2607804644.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2607804644.jpg deleted file mode 100644 index cdf3f14..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2607804644.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/261696203.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/261696203.jpg deleted file mode 100644 index 962be3b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/261696203.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2628667008.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2628667008.jpg deleted file mode 100644 index 6e6388f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2628667008.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2630608319.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2630608319.jpg deleted file mode 100644 index 0610f64..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2630608319.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/263103573.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/263103573.jpg deleted file mode 100644 index 5f8b3b8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/263103573.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2634347200.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2634347200.jpg deleted file mode 100644 index bca50cf..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2634347200.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2646565979.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2646565979.jpg deleted file mode 100644 index 9d49191..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2646565979.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2657313686.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2657313686.jpg deleted file mode 100644 index e2ec477..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2657313686.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2665514251.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2665514251.jpg deleted file mode 100644 index 62d73c4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2665514251.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2665573801.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2665573801.jpg deleted file mode 100644 index e09823e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2665573801.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2711287814.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2711287814.jpg deleted file mode 100644 index feba907..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/2711287814.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/274107639.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/274107639.jpg deleted file mode 100644 index b951479..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/274107639.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/276538827.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/276538827.jpg deleted file mode 100644 index c6a381b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/276538827.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/284402839.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/284402839.jpg deleted file mode 100644 index 8b53e43..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/284402839.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/291170713.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/291170713.jpg deleted file mode 100644 index 5dff16c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/291170713.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/29600931.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/29600931.jpg deleted file mode 100644 index f952bf7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/29600931.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/296728593.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/296728593.jpg deleted file mode 100644 index 2e00d51..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/296728593.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/305718025.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/305718025.jpg deleted file mode 100644 index 62cc090..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/305718025.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3065113788.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3065113788.jpg deleted file mode 100644 index 61fa8d7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3065113788.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3087230059.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3087230059.jpg deleted file mode 100644 index 5e4d142..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3087230059.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3096023144.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3096023144.jpg deleted file mode 100644 index 64da492..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3096023144.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3199802469.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3199802469.jpg deleted file mode 100644 index bcd005e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3199802469.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3208615251.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3208615251.jpg deleted file mode 100644 index 285fa05..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3208615251.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3213712336.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3213712336.jpg deleted file mode 100644 index e17ef20..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3213712336.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/328592742.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/328592742.jpg deleted file mode 100644 index a9366ca..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/328592742.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3286054438.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3286054438.jpg deleted file mode 100644 index 8e88d1f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3286054438.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3289692539.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3289692539.jpg deleted file mode 100644 index 7817383..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3289692539.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3297371681.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3297371681.jpg deleted file mode 100644 index 4414bfa..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3297371681.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3306807790.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3306807790.jpg deleted file mode 100644 index 69bc43e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/3306807790.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/331856031.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/331856031.jpg deleted file mode 100644 index 5eae35e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/331856031.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/350012950.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/350012950.jpg deleted file mode 100644 index ed6c3e5..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/350012950.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/361341005.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/361341005.jpg deleted file mode 100644 index 3eea27e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/361341005.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/372302129.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/372302129.jpg deleted file mode 100644 index 3b203c7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/372302129.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/381670311.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/381670311.jpg deleted file mode 100644 index 4fa6a69..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/381670311.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/382896007.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/382896007.jpg deleted file mode 100644 index 957ccb7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/382896007.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/384468552.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/384468552.jpg deleted file mode 100644 index 7dcc0c4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/384468552.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/389138125.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/389138125.jpg deleted file mode 100644 index 38188d2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/389138125.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/394500669.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/394500669.jpg deleted file mode 100644 index 3bb2862..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/394500669.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/396348696.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/396348696.jpg deleted file mode 100644 index d583e1a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/396348696.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/396903228.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/396903228.jpg deleted file mode 100644 index 7e338ef..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/396903228.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/399516587.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/399516587.jpg deleted file mode 100644 index 5a3d917..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/399516587.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/404961008.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/404961008.jpg deleted file mode 100644 index 710de10..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/404961008.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/407942945.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/407942945.jpg deleted file mode 100644 index 3a084e2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/407942945.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/417704967.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/417704967.jpg deleted file mode 100644 index fec9f0d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/417704967.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/424409712.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/424409712.jpg deleted file mode 100644 index e797105..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/424409712.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/437628393.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/437628393.jpg deleted file mode 100644 index dbede6f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/437628393.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/441534737.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/441534737.jpg deleted file mode 100644 index 0ee4088..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/441534737.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/449175426.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/449175426.jpg deleted file mode 100644 index 0af846c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/449175426.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/455153183.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/455153183.jpg deleted file mode 100644 index 81b0ba6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/455153183.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/462239613.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/462239613.jpg deleted file mode 100644 index 1cdd435..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/462239613.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/474216826.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/474216826.jpg deleted file mode 100644 index d203d17..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/474216826.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/477807875.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/477807875.jpg deleted file mode 100644 index 0074b39..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/477807875.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/477973848.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/477973848.jpg deleted file mode 100644 index c80a947..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/477973848.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/491520296.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/491520296.jpg deleted file mode 100644 index 2550fee..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/491520296.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/497178033.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/497178033.jpg deleted file mode 100644 index cb0f3a7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/497178033.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/499468502.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/499468502.jpg deleted file mode 100644 index 0173d0c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/499468502.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/504153435.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/504153435.jpg deleted file mode 100644 index 42dcc20..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/504153435.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/514993413.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/514993413.jpg deleted file mode 100644 index 465983e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/514993413.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/51601559.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/51601559.jpg deleted file mode 100644 index bb941b7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/51601559.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/524186683.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/524186683.jpg deleted file mode 100644 index fc6e47a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/524186683.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/531420711.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/531420711.jpg deleted file mode 100644 index 7ea53ae..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/531420711.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/543313585.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/543313585.jpg deleted file mode 100644 index 99065eb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/543313585.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/544594054.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/544594054.jpg deleted file mode 100644 index a119bb6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/544594054.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/545184877.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/545184877.jpg deleted file mode 100644 index c3fb589..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/545184877.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/546054758.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/546054758.jpg deleted file mode 100644 index 5a1b5d1..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/546054758.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/549357392.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/549357392.jpg deleted file mode 100644 index 50e203e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/549357392.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/550435285.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/550435285.jpg deleted file mode 100644 index d53548e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/550435285.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/550551182.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/550551182.jpg deleted file mode 100644 index 2fb0059..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/550551182.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/55106879.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/55106879.jpg deleted file mode 100644 index 6aa2a1c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/55106879.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/553924454.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/553924454.jpg deleted file mode 100644 index b044ee0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/553924454.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/570663326.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/570663326.jpg deleted file mode 100644 index d623986..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/570663326.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/575908312.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/575908312.jpg deleted file mode 100644 index 807af68..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/575908312.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/598105607.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/598105607.jpg deleted file mode 100644 index 93984aa..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/598105607.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/601668065.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/601668065.jpg deleted file mode 100644 index ac42ae7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/601668065.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/604419992.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/604419992.jpg deleted file mode 100644 index f7e3f76..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/604419992.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/610632170.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/610632170.jpg deleted file mode 100644 index 28ce33c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/610632170.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/623959830.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/623959830.jpg deleted file mode 100644 index 2454cb6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/623959830.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/630335515.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/630335515.jpg deleted file mode 100644 index 5eec02f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/630335515.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/644201934.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/644201934.jpg deleted file mode 100644 index a8ba734..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/644201934.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/645680902.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/645680902.jpg deleted file mode 100644 index 4e8568b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/645680902.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/648401136.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/648401136.jpg deleted file mode 100644 index a674b13..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/648401136.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/673276676.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/673276676.jpg deleted file mode 100644 index 241329f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/673276676.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/690025634.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/690025634.jpg deleted file mode 100644 index ff72dec..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/690025634.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/704664751.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/704664751.jpg deleted file mode 100644 index 1818ac7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/704664751.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/704709014.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/704709014.jpg deleted file mode 100644 index 71c654b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/704709014.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/706967911.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/706967911.jpg deleted file mode 100644 index 2130c35..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/706967911.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/719870850.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/719870850.jpg deleted file mode 100644 index 3eeb861..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/719870850.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/724453866.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/724453866.jpg deleted file mode 100644 index df511f5..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/724453866.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/727445654.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/727445654.jpg deleted file mode 100644 index 4e241ae..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/727445654.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/729241368.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/729241368.jpg deleted file mode 100644 index 4b8a63f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/729241368.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/739771180.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/739771180.jpg deleted file mode 100644 index 5bb25cc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/739771180.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/752579115.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/752579115.jpg deleted file mode 100644 index aee425d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/752579115.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/761231651.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/761231651.jpg deleted file mode 100644 index 6e6f72e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/761231651.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/764209949.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/764209949.jpg deleted file mode 100644 index 2c0f71c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/764209949.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/771704158.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/771704158.jpg deleted file mode 100644 index 0ebb713..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/771704158.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/785724717.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/785724717.jpg deleted file mode 100644 index ef30701..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/785724717.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/804104317.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/804104317.jpg deleted file mode 100644 index e4c5494..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/804104317.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/804466834.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/804466834.jpg deleted file mode 100644 index 29a24ff..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/804466834.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/807648230.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/807648230.jpg deleted file mode 100644 index ba31f60..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/807648230.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/815243941.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/815243941.jpg deleted file mode 100644 index eb236f6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/815243941.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/815979951.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/815979951.jpg deleted file mode 100644 index b1adb41..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/815979951.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/820489487.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/820489487.jpg deleted file mode 100644 index 6df1cc0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/820489487.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/836197203.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/836197203.jpg deleted file mode 100644 index 9711d67..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/836197203.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/836973794.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/836973794.jpg deleted file mode 100644 index ba31f60..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/836973794.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/837316140.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/837316140.jpg deleted file mode 100644 index 98dc92d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/837316140.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/838432469.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/838432469.jpg deleted file mode 100644 index 02838ca..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/838432469.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/838952446.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/838952446.jpg deleted file mode 100644 index eef8034..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/838952446.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/839362009.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/839362009.jpg deleted file mode 100644 index f8b23b6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/839362009.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/840788452.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/840788452.jpg deleted file mode 100644 index 976bdaf..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/840788452.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/843366923.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/843366923.jpg deleted file mode 100644 index e696a59..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/843366923.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/845667840.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/845667840.jpg deleted file mode 100644 index 21002f4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/845667840.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/859311284.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/859311284.jpg deleted file mode 100644 index 3f458fc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/859311284.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/861137091.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/861137091.jpg deleted file mode 100644 index fa39d47..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/861137091.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/865026025.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/865026025.jpg deleted file mode 100644 index 7817383..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/865026025.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/874390484.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/874390484.jpg deleted file mode 100644 index 0f5d64e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/874390484.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/876502611.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/876502611.jpg deleted file mode 100644 index 0c7fb93..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/876502611.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/879028931.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/879028931.jpg deleted file mode 100644 index 1264364..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/879028931.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/894517787.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/894517787.jpg deleted file mode 100644 index d75b4d4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/894517787.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/916277662.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/916277662.jpg deleted file mode 100644 index 62781b8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/916277662.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/916597274.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/916597274.jpg deleted file mode 100644 index 786a11d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/916597274.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/925488243.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/925488243.jpg deleted file mode 100644 index e84d591..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/925488243.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/932788548.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/932788548.jpg deleted file mode 100644 index 83abdd7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/932788548.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/937751466.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/937751466.jpg deleted file mode 100644 index eb28017..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/937751466.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/939839415.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/939839415.jpg deleted file mode 100644 index 1cc49c6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/939839415.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/940370567.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/940370567.jpg deleted file mode 100644 index df85328..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/940370567.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/940724946.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/940724946.jpg deleted file mode 100644 index 4b34e3e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/940724946.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/944092892.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/944092892.jpg deleted file mode 100644 index b9bbb5b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/944092892.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/944437590.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/944437590.jpg deleted file mode 100644 index 0f8afa1..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/944437590.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/949711310.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/949711310.jpg deleted file mode 100644 index 9536a67..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/949711310.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/951159498.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/951159498.jpg deleted file mode 100644 index ffc5bf0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/951159498.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/961368854.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/961368854.jpg deleted file mode 100644 index db36c29..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/961368854.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/962019527.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/962019527.jpg deleted file mode 100644 index 940f643..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/962019527.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/969904947.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/969904947.jpg deleted file mode 100644 index db94314..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/969904947.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/971189701.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/971189701.jpg deleted file mode 100644 index 494ef8e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/971189701.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/972474813.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/972474813.jpg deleted file mode 100644 index 07bb5b2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/972474813.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/987144184.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/987144184.jpg deleted file mode 100644 index 5366c14..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/987144184.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/992034472.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/992034472.jpg deleted file mode 100644 index e566e87..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/992034472.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/setu.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/setu.png deleted file mode 100644 index 078bcee..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image/setu.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/akai/akai.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/akai/akai.jpg deleted file mode 100644 index 67afa87..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/akai/akai.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/akai/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/akai/config.ini deleted file mode 100644 index b7e6029..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/akai/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"akai", - "font_max":220, - "font_size":40, - "font_center_x":125, - "font_center_y":220, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/alice/alice.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/alice/alice.jpg deleted file mode 100644 index 05fed34..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/alice/alice.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/alice/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/alice/config.ini deleted file mode 100644 index 766d2bd..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/alice/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"alice", - "font_max":380, - "font_size":65, - "font_center_x":200, - "font_center_y":488, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/aqua/aqua.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/aqua/aqua.jpg deleted file mode 100644 index ab7ee55..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/aqua/aqua.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/aqua/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/aqua/config.ini deleted file mode 100644 index f95edc0..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/aqua/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"aqua", - "font_max":220, - "font_size":25, - "font_center_x":120, - "font_center_y":263, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/bieming/name.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/bieming/name.ini deleted file mode 100644 index a2cdc4e..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/bieming/name.ini +++ /dev/null @@ -1,35 +0,0 @@ -心心 akai -阿夸 aqua -臭鼬 chouyou -好学 haoxue -黑手 heishou -逗乐了 heishou_four -熊猫1 initial -奥利给 jumozhanjiang -狗妈1 kaguranana -狗妈2 kaguranana_1 -狗妈3 kaguranana_2 -马自立1 matsuri -马自立2 matsuri_1 -kora katsuna -珂学家 keduoli -财布 mea -熊猫2 panda_shuai -熊猫3 panda_tutou -守夜冠军 qichuang -恶臭 xianbei -我爱你 jupai -吹雪1 fbk1 -吹雪2 fbk2 -peko peko -星姐 xingjie -粽子1 lxy1 -粽子2 lxy2 -爱丽丝 alice -猫猫 serena -猪 kasumi -猫猫猫 mengheqianli -gvc gbf -猫 mao -ksm ksm -栞栞 kan \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/chouyou/chouyou.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/chouyou/chouyou.jpg deleted file mode 100644 index 01bf4f0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/chouyou/chouyou.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/chouyou/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/chouyou/config.ini deleted file mode 100644 index 30cc73a..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/chouyou/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"chouyou", - "font_max":180, - "font_size":30, - "font_center_x":100, - "font_center_y":180, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/fbk1/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/fbk1/config.ini deleted file mode 100644 index e2bca37..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/fbk1/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"fbk1", - "font_max":280, - "font_size":40, - "font_center_x":151, - "font_center_y":290, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/fbk1/fbk1.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/fbk1/fbk1.jpg deleted file mode 100644 index d629a10..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/fbk1/fbk1.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/fbk2/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/fbk2/config.ini deleted file mode 100644 index b938dd6..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/fbk2/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"fbk2", - "font_max":346, - "font_size":50, - "font_center_x":193, - "font_center_y":385, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/fbk2/fbk2.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/fbk2/fbk2.jpg deleted file mode 100644 index dadc268..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/fbk2/fbk2.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/gbf/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/gbf/config.ini deleted file mode 100644 index 9cb589f..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/gbf/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"gbf", - "font_max":251, - "font_size":40, - "font_center_x":135, - "font_center_y":290, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/gbf/gbf.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/gbf/gbf.jpg deleted file mode 100644 index 98bfa1b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/gbf/gbf.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/haoxue/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/haoxue/config.ini deleted file mode 100644 index 6c5898a..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/haoxue/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"haoxue", - "font_max":460, - "font_size":40, - "font_center_x":250, - "font_center_y":433, - "color":"blue", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/haoxue/haoxue.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/haoxue/haoxue.jpg deleted file mode 100644 index 9fddde5..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/haoxue/haoxue.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/heishou/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/heishou/config.ini deleted file mode 100644 index 230cce8..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/heishou/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"heishou", - "font_max":240, - "font_size":40, - "font_center_x":150, - "font_center_y":262, - "color":"white", - "font_sub":10 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/heishou/heishou.JPG b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/heishou/heishou.JPG deleted file mode 100644 index 240b31f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/heishou/heishou.JPG and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/heishou_four/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/heishou_four/config.ini deleted file mode 100644 index c0a7ac3..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/heishou_four/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"heishou_four", - "font_max":380, - "font_size":50, - "font_center_x":250, - "font_center_y":250, - "color":"white", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/heishou_four/heishou_four.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/heishou_four/heishou_four.jpg deleted file mode 100644 index db65c32..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/heishou_four/heishou_four.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/initial/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/initial/config.ini deleted file mode 100644 index 424b5c0..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/initial/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"initial", - "font_max":310, - "font_size":55, - "font_center_x":175, - "font_center_y":313, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/initial/initial.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/initial/initial.jpg deleted file mode 100644 index 9d8ae08..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/initial/initial.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/initial/panda_normal.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/initial/panda_normal.jpg deleted file mode 100644 index 9d8ae08..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/initial/panda_normal.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/initial/xiongmao.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/initial/xiongmao.jpg deleted file mode 100644 index d1e1e6d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/initial/xiongmao.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/jinghua/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/jinghua/config.ini deleted file mode 100644 index f0f2307..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/jinghua/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"jinghua", - "font_max":150, - "font_size":20, - "font_center_x":80, - "font_center_y":150, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/jinghua/jinghua.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/jinghua/jinghua.jpg deleted file mode 100644 index f5c0555..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/jinghua/jinghua.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/jumozhanjiang/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/jumozhanjiang/config.ini deleted file mode 100644 index 128e846..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/jumozhanjiang/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"jumozhanjiang", - "font_max":340, - "font_size":60, - "font_center_x":200, - "font_center_y":465, - "color":"white", - "font_sub":10 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/jumozhanjiang/jumozhanjiang.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/jumozhanjiang/jumozhanjiang.jpg deleted file mode 100644 index f503454..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/jumozhanjiang/jumozhanjiang.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/jupai/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/jupai/config.ini deleted file mode 100644 index 3b6721c..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/jupai/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"jupai", - "font_max":380, - "font_size":80, - "font_center_x":400, - "font_center_y":650, - "color":"black", - "font_sub":10 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/jupai/jupai.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/jupai/jupai.jpg deleted file mode 100644 index 9f6380c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/jupai/jupai.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kaguranana/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kaguranana/config.ini deleted file mode 100644 index 5eac9ce..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kaguranana/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"kaguranana", - "font_max":340, - "font_size":40, - "font_center_x":200, - "font_center_y":405, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kaguranana/kaguranana.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kaguranana/kaguranana.jpg deleted file mode 100644 index d50a2b2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kaguranana/kaguranana.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kaguranana_1/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kaguranana_1/config.ini deleted file mode 100644 index a1e7a1f..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kaguranana_1/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"kaguranana_1", - "font_max":360, - "font_size":40, - "font_center_x":200, - "font_center_y":275, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kaguranana_1/kaguranana_1.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kaguranana_1/kaguranana_1.jpg deleted file mode 100644 index 067c6d1..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kaguranana_1/kaguranana_1.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kaguranana_2/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kaguranana_2/config.ini deleted file mode 100644 index 10599db..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kaguranana_2/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"kaguranana_2", - "font_max":615, - "font_size":70, - "font_center_x":327, - "font_center_y":645, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kaguranana_2/kaguranana_2.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kaguranana_2/kaguranana_2.jpg deleted file mode 100644 index bab9ce7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kaguranana_2/kaguranana_2.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kan/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kan/config.ini deleted file mode 100644 index 193d8c7..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kan/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"kan", - "font_max":170, - "font_size":20, - "font_center_x":90, - "font_center_y":171, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kan/kan.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kan/kan.jpg deleted file mode 100644 index f3e2015..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kan/kan.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kasumi/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kasumi/config.ini deleted file mode 100644 index 88303fb..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kasumi/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"kasumi", - "font_max":323, - "font_size":60, - "font_center_x":186, - "font_center_y":345, - "color":"white", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kasumi/kasumi.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kasumi/kasumi.jpg deleted file mode 100644 index 9694b95..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/kasumi/kasumi.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/katsuna/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/katsuna/config.ini deleted file mode 100644 index efe5803..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/katsuna/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"katsuna", - "font_max":230, - "font_size":35, - "font_center_x":125, - "font_center_y":278, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/katsuna/katsuna.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/katsuna/katsuna.jpg deleted file mode 100644 index 8151ece..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/katsuna/katsuna.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/keduoli/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/keduoli/config.ini deleted file mode 100644 index 04ffe84..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/keduoli/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"keduoli", - "font_max":180, - "font_size":25, - "font_center_x":100, - "font_center_y":223, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/keduoli/keduoli.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/keduoli/keduoli.jpg deleted file mode 100644 index c8561a0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/keduoli/keduoli.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/ksm/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/ksm/config.ini deleted file mode 100644 index 98218f4..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/ksm/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"ksm", - "font_max":469, - "font_size":50, - "font_center_x":254, - "font_center_y":320, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/ksm/ksm.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/ksm/ksm.jpg deleted file mode 100644 index 36af46e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/ksm/ksm.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/lxy1/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/lxy1/config.ini deleted file mode 100644 index d4b5708..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/lxy1/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"lxy1", - "font_max":460, - "font_size":70, - "font_center_x":250, - "font_center_y":535, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/lxy1/lxy1.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/lxy1/lxy1.jpg deleted file mode 100644 index 3013941..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/lxy1/lxy1.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/lxy2/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/lxy2/config.ini deleted file mode 100644 index 452bd68..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/lxy2/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"lxy2", - "font_max":460, - "font_size":65, - "font_center_x":250, - "font_center_y":458, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/lxy2/lxy2.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/lxy2/lxy2.jpg deleted file mode 100644 index 94f75bf..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/lxy2/lxy2.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/mao/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/mao/config.ini deleted file mode 100644 index e39e1a5..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/mao/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"mao", - "font_max":464, - "font_size":80, - "font_center_x":252, - "font_center_y":550, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/mao/mao.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/mao/mao.jpg deleted file mode 100644 index 145b927..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/mao/mao.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/matsuri/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/matsuri/config.ini deleted file mode 100644 index 9b2783c..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/matsuri/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"matsuri", - "font_max":180, - "font_size":35, - "font_center_x":100, - "font_center_y":195, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/matsuri/matsuri.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/matsuri/matsuri.jpg deleted file mode 100644 index 28ace9a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/matsuri/matsuri.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/matsuri_1/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/matsuri_1/config.ini deleted file mode 100644 index 404cc3a..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/matsuri_1/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"matsuri_1", - "font_max":230, - "font_size":25, - "font_center_x":125, - "font_center_y":233, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/matsuri_1/matsuri_1.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/matsuri_1/matsuri_1.jpg deleted file mode 100644 index c955784..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/matsuri_1/matsuri_1.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/mea/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/mea/config.ini deleted file mode 100644 index a8ad1d3..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/mea/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"mea", - "font_max":380, - "font_size":40, - "font_center_x":200, - "font_center_y":280, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/mea/mea.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/mea/mea.jpg deleted file mode 100644 index 2acfd8e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/mea/mea.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/mengheqianli/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/mengheqianli/config.ini deleted file mode 100644 index 60aa3ff..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/mengheqianli/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"mengheqianli", - "font_max":250, - "font_size":30, - "font_center_x":135, - "font_center_y":190, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/mengheqianli/mengheqianli.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/mengheqianli/mengheqianli.jpg deleted file mode 100644 index f0581ae..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/mengheqianli/mengheqianli.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/panda_shuai/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/panda_shuai/config.ini deleted file mode 100644 index 9c1cd0a..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/panda_shuai/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"panda_shuai", - "font_max":170, - "font_size":35, - "font_center_x":100, - "font_center_y":173, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/panda_shuai/panda_shuai.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/panda_shuai/panda_shuai.jpg deleted file mode 100644 index ec759c6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/panda_shuai/panda_shuai.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/panda_tutou/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/panda_tutou/config.ini deleted file mode 100644 index 3e934ad..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/panda_tutou/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"panda_tutou", - "font_max":160, - "font_size":40, - "font_center_x":100, - "font_center_y":170, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/panda_tutou/panda_tutou.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/panda_tutou/panda_tutou.jpg deleted file mode 100644 index 1d2aba7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/panda_tutou/panda_tutou.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/peko/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/peko/config.ini deleted file mode 100644 index 0455fff..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/peko/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"peko", - "font_max":460, - "font_size":90, - "font_center_x":250, - "font_center_y":485, - "color":"black", - "font_sub":10 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/peko/peko.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/peko/peko.jpg deleted file mode 100644 index f59f9b6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/peko/peko.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/qichuang/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/qichuang/config.ini deleted file mode 100644 index 01ad03b..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/qichuang/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"qichuang", - "font_max":440, - "font_size":70, - "font_center_x":250, - "font_center_y":80, - "color":"black", - "font_sub":10 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/qichuang/qichuang.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/qichuang/qichuang.jpg deleted file mode 100644 index 429971a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/qichuang/qichuang.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/qqdata/.gitignore b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/qqdata/.gitignore deleted file mode 100644 index 86d0cb2..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/qqdata/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/serena/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/serena/config.ini deleted file mode 100644 index 6ab3341..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/serena/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"serena", - "font_max":470, - "font_size":90, - "font_center_x":250, - "font_center_y":370, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/serena/serena.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/serena/serena.jpg deleted file mode 100644 index a9f6582..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/serena/serena.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/test/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/test/config.ini deleted file mode 100644 index 6f56662..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/test/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"xiongmao", - "font_max":320, - "font_size":40, - "font_center_x":200, - "font_center_y":350, - "color":"black", - "font_sub":10 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/test/xiongmao.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/test/xiongmao.jpg deleted file mode 100644 index d1e1e6d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/test/xiongmao.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/xianbei/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/xianbei/config.ini deleted file mode 100644 index e58e6ed..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/xianbei/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"xianbei", - "font_max":280, - "font_size":40, - "font_center_x":150, - "font_center_y":290, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/xianbei/xianbei.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/xianbei/xianbei.jpg deleted file mode 100644 index c3e7e6a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/xianbei/xianbei.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/xingjie/config.ini b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/xingjie/config.ini deleted file mode 100644 index 4ff54ee..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/xingjie/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name":"xingjie", - "font_max":180, - "font_size":25, - "font_center_x":100, - "font_center_y":253, - "color":"black", - "font_sub":5 -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/xingjie/xingjie.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/xingjie/xingjie.jpg deleted file mode 100644 index 90379a9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/xingjie/xingjie.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/kancolle/quick/kokkoro_stamp.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/kancolle/quick/kokkoro_stamp.png deleted file mode 100644 index 7e63710..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/kancolle/quick/kokkoro_stamp.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/kancolle/quick/菱饼2020.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/kancolle/quick/菱饼2020.jpg deleted file mode 100644 index a9a93f0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/kancolle/quick/菱饼2020.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/kancolle/quick/驱逐改二特殊装备早见表.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/kancolle/quick/驱逐改二特殊装备早见表.jpg deleted file mode 100644 index 6315beb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/kancolle/quick/驱逐改二特殊装备早见表.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/kokkoro_stamp.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/kokkoro_stamp.png deleted file mode 100644 index 7e63710..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/kokkoro_stamp.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/font/Mamelon.otf b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/font/Mamelon.otf deleted file mode 100644 index fcaabb8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/font/Mamelon.otf and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/font/sakura.ttf b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/font/sakura.ttf deleted file mode 100644 index f0bd372..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/font/sakura.ttf and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/fortune/copywriting.json b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/fortune/copywriting.json deleted file mode 100644 index ff4e723..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/fortune/copywriting.json +++ /dev/null @@ -1,662 +0,0 @@ -{ - "copywriting": [ - { - "charaid": ["1", "2"], - "_name": "凯露", - "type": [ - { - "good-luck": 10, - "content": "仅限今天而已!别想多了!!" - }, - { - "good-luck": 8, - "content": "宜抽卡﹁十连五彩不是梦﹂" - }, - { - "good-luck": 7, - "content": "宜刷本﹁碎片装备一大堆!你是托吧﹂" - }, - { - "good-luck": 6, - "content": "还不学习吗,殺すわよっ!" - }, - { - "good-luck": -6, - "content": "忌抽卡﹁这个池子不行的,没有3x啊﹂" - }, - { - "good-luck": -9, - "content": "ヤバイわよ!钱包又没了" - }, - { - "good-luck": 5, - "content": "双场排名飞升" - }, - { - "good-luck": -7, - "content": "伊莉亚又暴击了︵对自己" - }, - { - "good-luck": -8, - "content": "害学习呢,你被梯了" - }, - { - "good-luck": -10, - "content": "遇到困难,睡大觉" - }, - { - "good-luck": 24, - "content": "金运不错,所以你能借钱给我吗?" - } - ] - }, - { - "charaid": ["3", "4"], - "_name": "初音", - "type": [ - { - "good-luck": 10, - "content": "Kira☆今天运气绝佳♫" - }, - { - "good-luck": 9, - "content": "睡个午觉可以变清爽一点☆" - }, - { - "good-luck": 4, - "content": "醒醒你体力满了!" - }, - { - "good-luck": -6, - "content": "梦到熬夜赶ddl" - }, - { - "good-luck": -9, - "content": "用超能力的话,运气会不会好一点呢" - }, - { - "good-luck": 20, - "content": "ハツネちゃんの应援だよ!一切都会好起来的" - }, - { - "good-luck": 25, - "content": "叫上栞栞一起学习吧" - } - ] - }, - { - "charaid": ["5", "6"], - "_name": "杏奈", - "type": [ - { - "good-luck": 8, - "content": "氷狂凍獄絶零破!︵宜JJC" - }, - { - "good-luck": 7, - "content": "我ら煉獄に舞いし一陣の疾風︵宜现充" - }, - { - "good-luck": 4, - "content": "就到此为止了吗…︵宜摸鱼" - }, - { - "good-luck": -6, - "content": "冥 空 天 升︵会被演" - }, - { - "good-luck": -8, - "content": "会被提起黑历史" - }, - { - "good-luck": 21, - "content": "邪王真眼、我会追上你的︵宜表白" - } - ] - }, - { - "charaid": ["7", "8"], - "_name": "优妮", - "type": [ - { - "good-luck": 7, - "content": "宜学习﹁今天去图书馆自习吗﹂" - }, - { - "good-luck": 5, - "content": "宜击剑﹁讨论人性与哲学光辉﹂" - }, - { - "good-luck": 4, - "content": "论文的事,需要帮忙吗" - }, - { - "good-luck": -6, - "content": "会思考怎么拆对手到超时" - }, - { - "good-luck": -7, - "content": "会忘记每日十连" - }, - { - "good-luck": -9, - "content": "忌表白﹁啊啊,浓咖啡真好喝﹂" - }, - { - "good-luck": 26, - "content": "見たまえ同志!これこそわ﹁ユニちゃんズ﹂!" - } - ] - }, - { - "charaid": ["9", "10"], - "_name": "琪爱儿", - "type": [ - { - "good-luck": 9, - "content": "切噜☆♪" - }, - { - "good-luck": 6, - "content": "宜水群﹁你就是龙王切噜♪﹂" - }, - { - "good-luck": 4, - "content": "末小吉就是说你今天也没什么运气切噜噜" - }, - { - "good-luck": -6, - "content": "忌装弱﹁因为先辈你本来就很弱切噜♪﹂" - }, - { - "good-luck": -9, - "content": "切噜噜噜噜♪困难本0碎切噜!" - }, - { - "good-luck": 27, - "content": "总是萌混过关是交不到朋友的切噜☆" - } - ] - }, - { - "charaid": ["11", "12"], - "_name": "克萝依", - "type": [ - { - "good-luck": 10, - "content": "哦|偶尔也会有这样的日子呢,偶尔就是了" - }, - { - "good-luck": 6, - "content": "JJC啊,没几个人打你的" - }, - { - "good-luck": 5, - "content": "小心拖延症" - }, - { - "good-luck": -7, - "content": "会跨服聊天" - }, - { - "good-luck": -8, - "content": "水群会冷场" - }, - { - "good-luck": 23, - "content": "工作总是遇到奇怪的人" - } - ] - }, - { - "charaid": ["13", "14"], - "_name": "静流", - "type": [ - { - "good-luck": 9, - "content": "会十连出碎片" - }, - { - "good-luck": 8, - "content": "宜熬夜爆肝" - }, - { - "good-luck": 5, - "content": "宜出刀﹁希望弟弟暴击﹂" - }, - { - "good-luck": -6, - "content": "抽卡会+19" - }, - { - "good-luck": -8, - "content": "没什么精神,要姐姐的头槌清醒下吗♡" - }, - { - "good-luck": 21, - "content": "偷跑才是王道!︵冬马&静流" - } - ] - }, - { - "charaid": ["15", "16"], - "_name": "惠理子", - "type": [ - { - "good-luck": 10, - "content": "诸事皆宜" - }, - { - "good-luck": 7, - "content": "宜现充﹁会遇到命 运 之 人﹂" - }, - { - "good-luck": -7, - "content": "你就是记仇碎钻回刺人" - }, - { - "good-luck": -8, - "content": "忌dd﹁别的女人就这么吸引你吗﹂" - }, - { - "good-luck": -10, - "content": "今天……一直会在你身后的" - }, - { - "good-luck": 22, - "content": "爱情也需要调味料︵电脑配件" - } - ] - }, - { - "charaid": ["17", "18"], - "_name": "优花梨", - "type": [ - { - "good-luck": 8, - "content": "宜社畜﹁你就是戒酒后的优花梨﹂" - }, - { - "good-luck": 7, - "content": "宜摸鱼﹁我就再喝亿杯﹂" - }, - { - "good-luck": 4, - "content": "宜追番﹁守护最好的二刺螈﹂" - }, - { - "good-luck": -7, - "content": "忌现充﹁现充爆炸吧﹂" - }, - { - "good-luck": -8, - "content": "優花梨,为什么不喝呢~♫" - }, - { - "good-luck": 20, - "content": "运气用在了没用的地方" - } - ] - }, - { - "charaid": ["19", "20"], - "_name": "空花", - "type": [ - { - "good-luck": 9, - "content": "宜摸鱼﹁空花的妄想停不下来﹂" - }, - { - "good-luck": 7, - "content": "宜瑟图﹁群涩批时不时来暴露xp﹂" - }, - { - "good-luck": -6, - "content": "忌社畜﹁会被当成抖M﹂" - }, - { - "good-luck": -7, - "content": "忌水群﹁会被放置PLAY﹂" - }, - { - "good-luck": -8, - "content": "忌瑟图﹁哦淦老兄你xp好怪啊﹂" - }, - { - "good-luck": 26, - "content": "摩多摩多摩多~" - } - ] - }, - { - "charaid": ["21", "22"], - "_name": "忍", - "type": [ - { - "good-luck": 8, - "content": "父亲说这个占卜一点都不准。。。" - }, - { - "good-luck": 6, - "content": "宜DD﹁骷髅老爹也想栞栞!﹂" - }, - { - "good-luck": 4, - "content": "宜对线﹁你就是送爸人﹂" - }, - { - "good-luck": -7, - "content": "忌抽卡﹁父亲的占卜罢了,你身后是有挺多怨灵的﹂" - }, - { - "good-luck": -9, - "content": "忌表白﹁会得骷髅老爹真传﹂" - }, - { - "good-luck": 20, - "content": "今天你身边也是有各种各样的幽灵在呢" - } - ] - }, - { - "charaid": ["23", "24"], - "_name": "真步", - "type": [ - { - "good-luck": 10, - "content": "みらくるもほりん、くるりんぱ" - }, - { - "good-luck": 7, - "content": "宜刷本﹁这个是真步真步N3魔法!﹂" - }, - { - "good-luck": 5, - "content": "宜膜佬﹁?这真步河里﹂" - }, - { - "good-luck": -6, - "content": "宜复读﹁真步真步教○脑开始﹂" - }, - { - "good-luck": -7, - "content": "忌竞技场﹁那么,答案就只有一个了!﹂" - }, - { - "good-luck": 20, - "content": "咕噜灵波~" - } - ] - }, - { - "charaid": ["25", "26"], - "_name": "茜里", - "type": [ - { - "good-luck": 6, - "content": "宜出游﹁诶诶要在外面吗﹂" - }, - { - "good-luck": 5, - "content": "宜运动﹁这样的、太激烈了嗯﹂" - }, - { - "good-luck": 4, - "content": "那里,已经满满的了︵指体力" - }, - { - "good-luck": -7, - "content": "明明还是早上就要从后面。。。︵打回前排" - }, - { - "good-luck": -9, - "content": "忌瑟图﹁是谁害想着开车呢爪巴﹂" - }, - { - "good-luck": 21, - "content": "这种事,就是两个人一起会变舒服︵心情上︶的对吧?" - } - ] - }, - { - "charaid": ["27", "28"], - "_name": "镜华", - "type": [ - { - "good-luck": 7, - "content": "宜水群﹁今天你就是喷水龙王﹂" - }, - { - "good-luck": 5, - "content": "宜社畜﹁就算很讨厌,今天我也努力吃了一片胡萝卜﹂" - }, - { - "good-luck": 6, - "content": "宜出刀﹁虽然希望可以暴击変態桑而不是王﹂" - }, - { - "good-luck": -6, - "content": "忌装弱﹁优妮就算了,你也想叫妈妈?﹂" - }, - { - "good-luck": 26, - "content": "全体运会不会是能吃到纸杯蛋糕呢" - }, - { - "good-luck": 27, - "content": "変態変態変態変態!" - } - ] - }, - { - "charaid": ["29", "30"], - "_name": "美美", - "type": [ - { - "good-luck": 8, - "content": "天兔霸断剑,要试试吗" - }, - { - "good-luck": 7, - "content": "宜出游﹁会遇到小萝莉﹂" - }, - { - "good-luck": 4, - "content": "宜刷本﹁お兄ちゃん見ていて、いっぱい箱!﹂" - }, - { - "good-luck": -7, - "content": "忌出刀﹁美美的狮鹫长大了也会伤害它吗﹂" - }, - { - "good-luck": -8, - "content": "这个月会战摸了" - }, - { - "good-luck": 27, - "content": "镜华和未奏希也会吵架,但最后还是会和好的" - } - ] - }, - { - "charaid": ["31", "32"], - "_name": "未奏希", - "type": [ - { - "good-luck": 8, - "content": "宜刷本﹁成功避开攻略烟雾弹﹂" - }, - { - "good-luck": 5, - "content": "宜摸鱼﹁每天三刀甜心刀,大家一起睡饱饱﹂" - }, - { - "good-luck": 5, - "content": "小 心 熊 孩 子" - }, - { - "good-luck": -6, - "content": "忌出刀﹁刚跟镜华吵完架,现在是0暴镜华﹂" - }, - { - "good-luck": -8, - "content": "忌作死﹁自己挖的陷阱,自己踩下去﹂" - }, - { - "good-luck": 25, - "content": "哎呀,学不会啊!" - } - ] - }, - { - "charaid": ["33", "34"], - "_name": "怜", - "type": [ - { - "good-luck": 7, - "content": "宜钓鱼﹁剑圣之意不在鱼,在乎::﹂" - }, - { - "good-luck": 5, - "content": "宜击剑﹁要刺得快!刺得狠!﹂" - }, - { - "good-luck": 4, - "content": "宜现充﹁一起特训到晚上吧﹂" - }, - { - "good-luck": -8, - "content": "今天你就是老醋坛︵士条怜︶了" - }, - { - "good-luck": -10, - "content": "忌摸鱼﹁当你偷偷快乐的时候,优衣正在凝视着你﹂" - }, - { - "good-luck": 23, - "content": "遇到困难的时候,男?朋友总会帮你︵雪乃&怜" - } - ] - }, - { - "charaid": ["35", "36"], - "_name": "优衣", - "type": [ - { - "good-luck": 10, - "content": "诸事皆宜!今、今后也请::︵宕机" - }, - { - "good-luck": 6, - "content": "宜现充﹁朋?友都会顾及关心你﹂" - }, - { - "good-luck": -6, - "content": "说着对不起实际却偷吃的屑都不配被我奶" - }, - { - "good-luck": -7, - "content": "忌表白﹁诶诶诶我怎么又被对不起了﹂" - }, - { - "good-luck": -10, - "content": "忌抽卡﹁又井了呢,骑士君﹂" - }, - { - "good-luck": 21, - "content": "不许说对不起!" - } - ] - }, - { - "charaid": ["37", "38"], - "_name": "日和莉", - "type": [ - { - "good-luck": 9, - "content": "宜竞技场﹁欧拉欧拉欧拉欧拉欧拉!﹂" - }, - { - "good-luck": 8, - "content": "日行一善会有好事发生" - }, - { - "good-luck": 6, - "content": "宜对线﹁那就对他使用炎拳吧﹂" - }, - { - "good-luck": -7, - "content": "忌偏见﹁你以为我是猫,其实我是老虎哒﹂" - }, - { - "good-luck": -8, - "content": "忌表白﹁游戏也好,相遇也好,明明是我先来的﹂" - }, - { - "good-luck": 27, - "content": "开朗活泼想要保持他人关系,到底哪里出错了︵团子&日和莉" - } - ] - }, - { - "charaid": ["39", "40"], - "_name": "贪吃佩可", - "type": [ - { - "good-luck": 10, - "content": "んま~い!ごはんは命のエネルギー☆" - }, - { - "good-luck": 7, - "content": "宜现充﹁おいっす~☆﹂" - }, - { - "good-luck": 5, - "content": "宜二刺猿﹁真男人就该?高达﹂" - }, - { - "good-luck": -7, - "content": "今日性能降低﹁因为好吃就是高兴嘛﹂" - }, - { - "good-luck": -10, - "content": "忌水群﹁群霸瞳篡改群员记忆导致冷场﹂" - }, - { - "good-luck": 20, - "content": "ヤバイですね‼" - } - ] - }, - { - "charaid": ["41", "42"], - "_name": "可可萝", - "type": [ - { - "good-luck": 10, - "content": "今天也做得很好、主さま" - }, - { - "good-luck": 9, - "content": "宜抽卡﹁爱梅斯大人说今天又会遇到新的女生﹂" - }, - { - "good-luck": 8, - "content": "宜刷本﹁已经让密涅瓦偷偷改过数据了﹂" - }, - { - "good-luck": -8, - "content": "果然又是主人认识的女生,以后叫わんわんの主さま好了" - }, - { - "good-luck": -9, - "content": "忌半途而废﹁第几次转生了,DD﹂" - }, - { - "good-luck": 26, - "content": "诸事皆宜" - } - ] - } - ] -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/fortune/goodLuck.json b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/fortune/goodLuck.json deleted file mode 100644 index c3368b1..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/fortune/goodLuck.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "types_of": [ - { - "good-luck": 10, - "name": "大吉" - }, - { - "good-luck": 9, - "name": "中吉" - }, - { - "good-luck": 8, - "name": "小吉" - }, - { - "good-luck": 7, - "name": "吉" - }, - { - "good-luck": 6, - "name": "半吉" - }, - { - "good-luck": 5, - "name": "末吉" - }, - { - "good-luck": 4, - "name": "末小吉" - }, - { - "good-luck": -6, - "name": "凶" - }, - { - "good-luck": -7, - "name": "小凶" - }, - { - "good-luck": -8, - "name": "半凶" - }, - { - "good-luck": -9, - "name": "末凶" - }, - { - "good-luck": -10, - "name": "大凶" - }, - { - "good-luck": 20, - "name": "総合運" - }, - { - "good-luck": 21, - "name": "恋愛運" - }, - { - "good-luck": 22, - "name": "結婚運" - }, - { - "good-luck": 23, - "name": "仕事運" - }, - { - "good-luck": 24, - "name": "金運" - }, - { - "good-luck": 25, - "name": "勉強運" - }, - { - "good-luck": 26, - "name": "全体運" - }, - { - "good-luck": 27, - "name": "関係運" - } - ] -} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_1.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_1.jpg deleted file mode 100644 index b9feb5d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_1.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_10.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_10.jpg deleted file mode 100644 index c93faef..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_10.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_11.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_11.jpg deleted file mode 100644 index 9a74039..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_11.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_12.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_12.jpg deleted file mode 100644 index 0dff1ec..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_12.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_13.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_13.jpg deleted file mode 100644 index b7e2619..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_13.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_14.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_14.jpg deleted file mode 100644 index adb9369..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_14.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_15.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_15.jpg deleted file mode 100644 index c86c42c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_15.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_16.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_16.jpg deleted file mode 100644 index 3f8127e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_16.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_17.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_17.jpg deleted file mode 100644 index 644d1d6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_17.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_18.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_18.jpg deleted file mode 100644 index 9bf472d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_18.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_19.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_19.jpg deleted file mode 100644 index 8c20a85..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_19.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_2.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_2.jpg deleted file mode 100644 index 1054e9e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_2.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_20.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_20.jpg deleted file mode 100644 index 6f3aa3e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_20.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_21.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_21.jpg deleted file mode 100644 index 99c5591..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_21.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_22.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_22.jpg deleted file mode 100644 index 34cd620..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_22.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_23.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_23.jpg deleted file mode 100644 index 8506394..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_23.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_24.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_24.jpg deleted file mode 100644 index 099ab4c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_24.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_25.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_25.jpg deleted file mode 100644 index 3ee8952..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_25.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_26.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_26.jpg deleted file mode 100644 index 41821e4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_26.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_27.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_27.jpg deleted file mode 100644 index 655b0bc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_27.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_28.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_28.jpg deleted file mode 100644 index 40c8723..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_28.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_29.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_29.jpg deleted file mode 100644 index 072d1b2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_29.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_3.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_3.jpg deleted file mode 100644 index c583e04..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_3.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_30.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_30.jpg deleted file mode 100644 index 7819769..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_30.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_31.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_31.jpg deleted file mode 100644 index e45c905..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_31.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_32.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_32.jpg deleted file mode 100644 index 186157d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_32.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_33.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_33.jpg deleted file mode 100644 index 4ad4803..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_33.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_34.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_34.jpg deleted file mode 100644 index 0b5bd15..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_34.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_35.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_35.jpg deleted file mode 100644 index c9e085f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_35.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_36.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_36.jpg deleted file mode 100644 index c898569..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_36.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_37.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_37.jpg deleted file mode 100644 index f784645..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_37.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_38.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_38.jpg deleted file mode 100644 index 9d4f205..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_38.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_39.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_39.jpg deleted file mode 100644 index 796d479..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_39.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_4.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_4.jpg deleted file mode 100644 index b9ee189..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_4.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_40.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_40.jpg deleted file mode 100644 index ab8b3fc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_40.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_41.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_41.jpg deleted file mode 100644 index b29e890..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_41.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_42.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_42.jpg deleted file mode 100644 index a0d4411..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_42.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_5.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_5.jpg deleted file mode 100644 index 0c57554..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_5.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_6.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_6.jpg deleted file mode 100644 index 20891e4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_6.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_7.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_7.jpg deleted file mode 100644 index f087283..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_7.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_8.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_8.jpg deleted file mode 100644 index 5777ff5..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_8.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_9.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_9.jpg deleted file mode 100644 index 583051e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/imgbase/frame_9.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/out/frame_11.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/out/frame_11.jpg deleted file mode 100644 index 4aa235e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/out/frame_11.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/out/frame_27.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/out/frame_27.jpg deleted file mode 100644 index 85eb5fc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/out/frame_27.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/out/frame_28.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/out/frame_28.jpg deleted file mode 100644 index 7fab895..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/out/frame_28.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/out/frame_34.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/out/frame_34.jpg deleted file mode 100644 index 7cf35ac..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/portunedata/out/frame_34.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/H~@%PMGOFZNLLE@3I~%@4N9.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/H~@%PMGOFZNLLE@3I~%@4N9.png deleted file mode 100644 index 85a2e04..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/H~@%PMGOFZNLLE@3I~%@4N9.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/KyaruMiniGame/kokkoro_stamp.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/KyaruMiniGame/kokkoro_stamp.png deleted file mode 100644 index 7e63710..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/KyaruMiniGame/kokkoro_stamp.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/KyaruMiniGame/接龙.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/KyaruMiniGame/接龙.jpg deleted file mode 100644 index c41201e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/KyaruMiniGame/接龙.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/KyaruMiniGame/注音文字.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/KyaruMiniGame/注音文字.jpg deleted file mode 100644 index 6924a00..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/KyaruMiniGame/注音文字.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/antiqks.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/antiqks.jpg deleted file mode 100644 index 2afb52b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/antiqks.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_1.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_1.png deleted file mode 100644 index 015538d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_1.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_10.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_10.png deleted file mode 100644 index cb87da7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_10.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_100.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_100.png deleted file mode 100644 index 79764c0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_100.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_101.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_101.png deleted file mode 100644 index 51438f3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_101.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_102.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_102.png deleted file mode 100644 index a0c2d9e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_102.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_103.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_103.png deleted file mode 100644 index df93fd4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_103.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_104.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_104.png deleted file mode 100644 index 423821c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_104.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_105.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_105.png deleted file mode 100644 index a8e1d65..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_105.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_106.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_106.png deleted file mode 100644 index d68debd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_106.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_107.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_107.png deleted file mode 100644 index b843a2a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_107.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_108.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_108.png deleted file mode 100644 index e666aa0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_108.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_109.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_109.png deleted file mode 100644 index d32d896..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_109.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_11.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_11.png deleted file mode 100644 index 285caff..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_11.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_110.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_110.png deleted file mode 100644 index 7c9fed8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_110.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_111.png deleted file mode 100644 index 1b624ab..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_112.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_112.png deleted file mode 100644 index 2171163..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_112.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_113.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_113.png deleted file mode 100644 index 2ae354c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_113.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_114.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_114.png deleted file mode 100644 index 498f6ee..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_114.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_115.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_115.png deleted file mode 100644 index bab5752..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_115.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_116.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_116.png deleted file mode 100644 index 4a41877..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_116.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_117.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_117.png deleted file mode 100644 index c132064..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_117.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_118.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_118.png deleted file mode 100644 index a4543d6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_118.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_119.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_119.png deleted file mode 100644 index 00b3418..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_119.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_12.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_12.png deleted file mode 100644 index d9f44a7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_12.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_120.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_120.png deleted file mode 100644 index 4166cd4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_120.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_121.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_121.png deleted file mode 100644 index 87b9d76..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_121.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_122.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_122.png deleted file mode 100644 index 10b8c7b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_122.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_123.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_123.png deleted file mode 100644 index 0a1a98c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_123.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_124.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_124.png deleted file mode 100644 index 6ddd625..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_124.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_125.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_125.png deleted file mode 100644 index f804601..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_125.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_126.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_126.png deleted file mode 100644 index 6be59a0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_126.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_127.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_127.png deleted file mode 100644 index 136a7bf..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_127.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_128.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_128.png deleted file mode 100644 index 2f6fefc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_128.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_129.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_129.png deleted file mode 100644 index a7595b1..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_129.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_13.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_13.png deleted file mode 100644 index 5939943..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_13.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_130.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_130.png deleted file mode 100644 index 894dbab..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_130.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_131.png deleted file mode 100644 index 2a1ee80..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_132.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_132.png deleted file mode 100644 index c21cee1..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_132.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_133.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_133.png deleted file mode 100644 index 33c6e4a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_133.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_134.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_134.png deleted file mode 100644 index 7152117..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_134.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_135.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_135.png deleted file mode 100644 index 1c91820..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_135.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_136.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_136.png deleted file mode 100644 index 504a6fd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_136.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_137.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_137.png deleted file mode 100644 index 376a7d4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_137.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_138.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_138.png deleted file mode 100644 index 6f8fcab..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_138.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_139.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_139.png deleted file mode 100644 index 8aba6fc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_139.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_14.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_14.png deleted file mode 100644 index 0fdcfed..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_14.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_140.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_140.png deleted file mode 100644 index 93524fd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_140.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_141.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_141.png deleted file mode 100644 index f5e3871..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_141.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_142.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_142.png deleted file mode 100644 index 58d1ceb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_142.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_143.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_143.png deleted file mode 100644 index 2e4eb7f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_143.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_144.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_144.png deleted file mode 100644 index cf5ee4a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_144.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_145.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_145.png deleted file mode 100644 index f98c5f2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_145.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_146.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_146.png deleted file mode 100644 index 5d8300c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_146.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_147.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_147.png deleted file mode 100644 index 3d2b705..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_147.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_148.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_148.png deleted file mode 100644 index 2a5e6e7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_148.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_149.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_149.png deleted file mode 100644 index 6d9dc00..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_149.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_15.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_15.png deleted file mode 100644 index e60144f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_15.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_150.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_150.png deleted file mode 100644 index 24c6013..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_150.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_151.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_151.png deleted file mode 100644 index 16ce6ab..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_151.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_152.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_152.png deleted file mode 100644 index df30c0e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_152.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_153.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_153.png deleted file mode 100644 index d814120..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_153.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_154.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_154.png deleted file mode 100644 index a3ac33f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_154.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_155.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_155.png deleted file mode 100644 index 9477bdd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_155.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_156.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_156.png deleted file mode 100644 index 0b4924e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_156.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_157.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_157.png deleted file mode 100644 index 60ca5da..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_157.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_158.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_158.png deleted file mode 100644 index f62d2dd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_158.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_159.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_159.png deleted file mode 100644 index 72d762e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_159.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_16.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_16.png deleted file mode 100644 index 8e47158..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_16.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_160.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_160.png deleted file mode 100644 index d4fcf5c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_160.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_161.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_161.png deleted file mode 100644 index cffce4b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_161.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_162.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_162.png deleted file mode 100644 index c00c437..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_162.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_163.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_163.png deleted file mode 100644 index bfe21d1..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_163.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_164.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_164.png deleted file mode 100644 index a8faf55..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_164.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_165.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_165.png deleted file mode 100644 index 5c2680d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_165.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_166.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_166.png deleted file mode 100644 index 200383d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_166.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_167.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_167.png deleted file mode 100644 index 11476ce..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_167.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_168.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_168.png deleted file mode 100644 index b23cedd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_168.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_169.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_169.png deleted file mode 100644 index c13a2ea..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_169.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_17.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_17.png deleted file mode 100644 index 579eb92..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_17.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_170.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_170.png deleted file mode 100644 index c85fb69..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_170.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_171.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_171.png deleted file mode 100644 index f58a01f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_171.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_172.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_172.png deleted file mode 100644 index 940ef05..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_172.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_173.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_173.png deleted file mode 100644 index 7ece500..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_173.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_174.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_174.png deleted file mode 100644 index df803b1..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_174.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_175.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_175.png deleted file mode 100644 index c4e26cd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_175.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_176.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_176.png deleted file mode 100644 index 18398aa..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_176.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_177.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_177.png deleted file mode 100644 index 3336868..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_177.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_178.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_178.png deleted file mode 100644 index 25ebbbc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_178.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_179.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_179.png deleted file mode 100644 index 5e15e3b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_179.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_18.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_18.png deleted file mode 100644 index ede37d0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_18.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_180.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_180.png deleted file mode 100644 index 3a54ef8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_180.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_181.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_181.png deleted file mode 100644 index 4fc550a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_181.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_182.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_182.png deleted file mode 100644 index 75e2e98..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_182.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_183.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_183.png deleted file mode 100644 index 9631b9b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_183.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_184.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_184.png deleted file mode 100644 index 8bcae10..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_184.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_185.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_185.png deleted file mode 100644 index 63e609a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_185.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_186.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_186.png deleted file mode 100644 index 018bc26..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_186.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_187.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_187.png deleted file mode 100644 index 3956df1..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_187.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_188.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_188.png deleted file mode 100644 index 4a23448..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_188.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_189.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_189.png deleted file mode 100644 index 84e3d23..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_189.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_19.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_19.png deleted file mode 100644 index 161de2d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_19.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_190.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_190.png deleted file mode 100644 index c81e1ac..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_190.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_191.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_191.png deleted file mode 100644 index e58da31..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_191.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_192.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_192.png deleted file mode 100644 index 46cf581..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_192.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_193.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_193.png deleted file mode 100644 index d1b372b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_193.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_194.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_194.png deleted file mode 100644 index c937d5c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_194.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_195.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_195.png deleted file mode 100644 index a90f9b3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_195.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_196.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_196.png deleted file mode 100644 index 215f943..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_196.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_197.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_197.png deleted file mode 100644 index f947727..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_197.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_198.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_198.png deleted file mode 100644 index ff7ed65..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_198.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_199.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_199.png deleted file mode 100644 index 5fd7812..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_199.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_2.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_2.png deleted file mode 100644 index 05af9f4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_2.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_20.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_20.png deleted file mode 100644 index 7041f4d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_20.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_200.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_200.png deleted file mode 100644 index 6518130..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_200.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_201.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_201.png deleted file mode 100644 index 8d5ceab..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_201.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_209.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_209.png deleted file mode 100644 index 984b8fd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_209.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_21.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_21.png deleted file mode 100644 index 949cc2a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_21.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_210.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_210.png deleted file mode 100644 index 748d4e8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_210.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_211.png deleted file mode 100644 index 3e0afee..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_212.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_212.png deleted file mode 100644 index 6df851a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_212.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_213.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_213.png deleted file mode 100644 index c130172..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_213.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_214.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_214.png deleted file mode 100644 index d358525..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_214.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_215.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_215.png deleted file mode 100644 index 4a4e4d5..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_215.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_216.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_216.png deleted file mode 100644 index dc90a46..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_216.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_217.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_217.png deleted file mode 100644 index f681443..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_217.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_218.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_218.png deleted file mode 100644 index b4fd0c9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_218.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_219.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_219.png deleted file mode 100644 index bcd4c1b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_219.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_22.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_22.png deleted file mode 100644 index 4536e5b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_22.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_220.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_220.png deleted file mode 100644 index 8ecc369..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_220.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_221.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_221.png deleted file mode 100644 index 330a4f0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_221.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_222.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_222.png deleted file mode 100644 index bc0584b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_222.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_223.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_223.png deleted file mode 100644 index ebc520e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_223.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_23.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_23.png deleted file mode 100644 index a1fca7e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_23.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_24.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_24.png deleted file mode 100644 index b6e4f34..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_24.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_25.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_25.png deleted file mode 100644 index 05a831d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_25.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_26.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_26.png deleted file mode 100644 index 1a9079d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_26.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_27.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_27.png deleted file mode 100644 index b398159..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_27.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_28.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_28.png deleted file mode 100644 index ee2f310..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_28.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_29.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_29.png deleted file mode 100644 index c8f1f63..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_29.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_3.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_3.png deleted file mode 100644 index f814613..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_3.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_30.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_30.png deleted file mode 100644 index 30e8392..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_30.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_31.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_31.png deleted file mode 100644 index 44fdecb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_31.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_32.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_32.png deleted file mode 100644 index 9614908..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_32.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_33.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_33.png deleted file mode 100644 index 2bcc069..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_33.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_337.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_337.png deleted file mode 100644 index b86f002..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_337.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_338.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_338.png deleted file mode 100644 index b76d6d0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_338.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_339.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_339.png deleted file mode 100644 index f3fcfc7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_339.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_34.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_34.png deleted file mode 100644 index 0b4ad95..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_34.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_340.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_340.png deleted file mode 100644 index 8822112..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_340.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_341.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_341.png deleted file mode 100644 index 7d42b55..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_341.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_342.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_342.png deleted file mode 100644 index 882e370..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_342.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_343.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_343.png deleted file mode 100644 index adfaac3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_343.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_344.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_344.png deleted file mode 100644 index fc238c8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_344.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_345.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_345.png deleted file mode 100644 index 5bbf7fd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_345.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_346.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_346.png deleted file mode 100644 index dc37d6e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_346.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_347.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_347.png deleted file mode 100644 index d9771f2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_347.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_348.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_348.png deleted file mode 100644 index 6e0854a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_348.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_349.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_349.png deleted file mode 100644 index abaab42..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_349.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_35.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_35.png deleted file mode 100644 index 201a419..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_35.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_350.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_350.png deleted file mode 100644 index 547235b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_350.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_351.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_351.png deleted file mode 100644 index f199872..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_351.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_352.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_352.png deleted file mode 100644 index f654494..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_352.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_353.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_353.png deleted file mode 100644 index c9b4ddb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_353.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_36.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_36.png deleted file mode 100644 index c1a376b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_36.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_37.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_37.png deleted file mode 100644 index bbedc49..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_37.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_38.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_38.png deleted file mode 100644 index 2fe006a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_38.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_39.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_39.png deleted file mode 100644 index 19145c8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_39.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_4.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_4.png deleted file mode 100644 index 22aed3a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_4.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_40.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_40.png deleted file mode 100644 index 506e6a2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_40.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_41.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_41.png deleted file mode 100644 index d4f530d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_41.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_42.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_42.png deleted file mode 100644 index cb1404d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_42.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_43.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_43.png deleted file mode 100644 index 47ebaa7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_43.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_44.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_44.png deleted file mode 100644 index 99b2562..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_44.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_45.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_45.png deleted file mode 100644 index d80f6c7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_45.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_46.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_46.png deleted file mode 100644 index 9a4cee8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_46.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_47.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_47.png deleted file mode 100644 index 8b4a874..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_47.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_48.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_48.png deleted file mode 100644 index 7c4c34f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_48.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_49.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_49.png deleted file mode 100644 index e3cfa96..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_49.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_5.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_5.png deleted file mode 100644 index f706d11..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_5.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_50.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_50.png deleted file mode 100644 index 0a83f04..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_50.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_51.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_51.png deleted file mode 100644 index b8042bc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_51.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_52.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_52.png deleted file mode 100644 index e42b281..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_52.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_53.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_53.png deleted file mode 100644 index 3b3d45a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_53.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_54.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_54.png deleted file mode 100644 index bbba220..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_54.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_55.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_55.png deleted file mode 100644 index 8e7ca25..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_55.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_56.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_56.png deleted file mode 100644 index 187a0f5..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_56.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_57.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_57.png deleted file mode 100644 index 2c6edc4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_57.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_58.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_58.png deleted file mode 100644 index 99bfc8d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_58.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_59.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_59.png deleted file mode 100644 index 29c55a0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_59.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_6.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_6.png deleted file mode 100644 index a2d8e44..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_6.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_60.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_60.png deleted file mode 100644 index 0f48a49..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_60.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_61.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_61.png deleted file mode 100644 index df74c62..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_61.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_62.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_62.png deleted file mode 100644 index f11cd5b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_62.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_63.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_63.png deleted file mode 100644 index d48159a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_63.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_64.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_64.png deleted file mode 100644 index e51523a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_64.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_65.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_65.png deleted file mode 100644 index ae98be8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_65.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_66.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_66.png deleted file mode 100644 index c7e8e74..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_66.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_67.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_67.png deleted file mode 100644 index a216d97..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_67.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_68.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_68.png deleted file mode 100644 index c48891c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_68.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_69.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_69.png deleted file mode 100644 index 1ab5010..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_69.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_7.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_7.png deleted file mode 100644 index aeb0e28..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_7.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_70.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_70.png deleted file mode 100644 index b92e288..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_70.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_71.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_71.png deleted file mode 100644 index af7a359..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_71.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_72.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_72.png deleted file mode 100644 index acfacab..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_72.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_73.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_73.png deleted file mode 100644 index a3f0c7c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_73.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_74.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_74.png deleted file mode 100644 index 69599f6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_74.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_75.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_75.png deleted file mode 100644 index f5e4e1c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_75.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_76.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_76.png deleted file mode 100644 index 8cd0b2a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_76.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_77.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_77.png deleted file mode 100644 index e00c753..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_77.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_78.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_78.png deleted file mode 100644 index bcb3e8b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_78.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_79.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_79.png deleted file mode 100644 index e8d0418..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_79.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_8.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_8.png deleted file mode 100644 index 32d9540..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_8.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_80.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_80.png deleted file mode 100644 index b8427a2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_80.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_81.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_81.png deleted file mode 100644 index 8758868..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_81.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_82.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_82.png deleted file mode 100644 index 2d18133..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_82.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_83.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_83.png deleted file mode 100644 index 7fc3b19..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_83.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_84.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_84.png deleted file mode 100644 index c2159d0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_84.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_85.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_85.png deleted file mode 100644 index 39c6092..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_85.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_86.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_86.png deleted file mode 100644 index 9029ef3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_86.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_87.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_87.png deleted file mode 100644 index 3e1d48a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_87.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_88.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_88.png deleted file mode 100644 index e2a4d53..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_88.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_89.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_89.png deleted file mode 100644 index 35a0a77..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_89.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_9.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_9.png deleted file mode 100644 index e19c72f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_9.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_90.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_90.png deleted file mode 100644 index 2e5e0a4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_90.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_91.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_91.png deleted file mode 100644 index f2bc34c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_91.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_92.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_92.png deleted file mode 100644 index d24dd04..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_92.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_93.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_93.png deleted file mode 100644 index 54cdedb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_93.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_94.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_94.png deleted file mode 100644 index 37d6ac3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_94.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_95.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_95.png deleted file mode 100644 index 0ef2beb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_95.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_96.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_96.png deleted file mode 100644 index db4f611..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_96.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_97.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_97.png deleted file mode 100644 index 8b73c20..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_97.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_98.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_98.png deleted file mode 100644 index 760e492..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_98.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_99.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_99.png deleted file mode 100644 index 326d6eb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/episode_99.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/index.json b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/index.json deleted file mode 100644 index 3695ca2..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/comic/index.json +++ /dev/null @@ -1 +0,0 @@ -{"1":{"title":"だれのため?","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/ae397a547f41dcbb5c55b07b5c44a544.png?id=1"},"2":{"title":"ケンカはだめっ!","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/5dec4d9e975f7b916fcd296a4c1f754e.png?id=2"},"3":{"title":"荷物の中身は","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/b188359b5a6caf8fec4e1f3eb4de3afd.png?id=3"},"4":{"title":"しっかり観察!","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/cffde6f906d390dc05aeccb37dea13ff.png?id=4"},"5":{"title":"もりのこえ(前編)","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/fa46349651aa504e0cf0fbc7e7785fe6.png?id=5"},"6":{"title":"もりのこえ(後編)","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/83898de0b8017ce8f860671d69870f6a.png?id=6"},"7":{"title":"正体みたりっ!","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/15b1ba8438a0e9b6a72c83d898f1051c.png?id=7"},"8":{"title":"すれちがい","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/91ae1ef284c47a202a241132f156e8c4.png?id=8"},"9":{"title":"カリスマ?","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/ad8f7a34516125de0bf3136385240e89.png?id=9"},"10":{"title":"イマジネーション","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/38b595e0121c343eff137cdcef056ebb.png?id=10"},"11":{"title":"放っておけないっ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/628471617c9c509cab9dc309eb606548.png?id=11"},"12":{"title":"オトナのミリョク?","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/57095e7adaeecf512e63a1f075351c5e.png?id=12"},"13":{"title":"追われ追われて","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/befe66bc735aeceb16add20a2a00730e.png?id=13"},"14":{"title":"幻の4人目","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/9cf74bfe7a73ca1a09d5f680f62a04d6.png?id=14"},"15":{"title":"め・し・あ・が・れ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/0b013c9f0fedd511247c58d8e4377332.png?id=15"},"16":{"title":"レイの休日","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/bf666ef634ca6ef58af470470c35e5d4.png?id=16"},"17":{"title":"立てば芍薬","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/b9689cbdf5316e64f2ae6d6664adfa4c.png?id=17"},"18":{"title":"わくわくバカンス","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/460192e407baee413f88fba96d0bbe8e.png?id=18"},"19":{"title":"きせかえコッコロ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/2c3f726fd8deafb0d31145f78361a809.png?id=19"},"20":{"title":"大事な家族","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/955fbce5fb125752874a6c230ee09ddd.png?id=20"},"21":{"title":"水着でおもてなし","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/94ad8c9df22c1a0e696e261acb507b74.png?id=21"},"22":{"title":"演技派","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/736819e71fbaba1099778dbe3906a7f1.png?id=22"},"23":{"title":"悪夢再び","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/1c2eca6506f990d269678bd231a682e8.png?id=23"},"24":{"title":"ねじねじもふもふ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/5452d2d00b30ddd2104aa3c261e3ab81.png?id=24"},"25":{"title":"必要ないっ!","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/a31b80691c6c90c01c2b69ee10de6b7b.png?id=25"},"26":{"title":"おねがい","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/242283ba8241de38f142603dd305bc7d.png?id=26"},"27":{"title":"完璧な計画","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/4613a4eba6420440d85bbec2fd48f327.png?id=27"},"28":{"title":"力の理由","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/cf11917ce4872183ad85e5141f8d2e3b.png?id=28"},"29":{"title":"のみすぎちゅうい","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/4bc3c6ab139b51742a41d826170d463a.png?id=29"},"30":{"title":"苦手なもの","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/0eb816d4939485551fcff4a3de62b311.png?id=30"},"31":{"title":"裏の顔(前編)","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/ee057e488a544fd9d167879b89471517.png?id=31"},"32":{"title":"裏の顔(後編)","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/bcf86d4e8d7ffd3989e84b39173a3124.png?id=32"},"33":{"title":"目覚めの","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/c832bd106bf76e2d00698e724c82bbed.png?id=33"},"34":{"title":"熱烈歓迎モード","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/40964d3afe2d85e4ab44539a739c97d2.png?id=34"},"35":{"title":"調査用アイテム?","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/d33f354bbe0683e6c742867f0452a4fd.png?id=35"},"36":{"title":"悪い癖","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/b3bc7fde799334e6c30b01bbeef572c8.png?id=36"},"37":{"title":"合体技ッス!(前編)","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/9a792aa0a260210ff2575b07086f6d8d.png?id=37"},"38":{"title":"合体技ッス!(後編)","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/25e77187aaf864698886bad0ff8ff8d1.png?id=38"},"39":{"title":"エネルギー切れ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/4f7abb516b61f58d56f270d0bbe0b1ba.png?id=39"},"40":{"title":"鵜の真似をするべからず","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/40b16f54f8c441e85b9c8510d11f2bb2.png?id=40"},"41":{"title":"照れ隠し","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/9ef3f964a6345bd3c61bd36cf46def48.png?id=41"},"42":{"title":"食べ物のうらみ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/90f4ee522b58969987e694bd8d910fbe.png?id=42"},"43":{"title":"しかつもんだい","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/bea625220d452518f10eb2a31c75dee8.png?id=43"},"44":{"title":"居心地良し","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/9a1f6bd8e84d091520a194c51e66ca35.png?id=44"},"45":{"title":"手加減抜き","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/54c095f7d0be3eb20a07b34a408f458d.png?id=45"},"46":{"title":"大人の味","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/9755688b072c068097f295cfc9e82d7b.png?id=46"},"47":{"title":"憧れの放課後","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/ad9f0b34cd9ecc331603cc6eaedbdd41.png?id=47"},"48":{"title":"魅了の魔法?","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/8a66fbc0dfd9ff9b8fa2c8caf74e50f4.png?id=48"},"49":{"title":"進軍!!","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/d96c19b5d9bbd899bc2659f71caf4203.png?id=49"},"50":{"title":"その身に刻めッ!","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/39c10b1514663ad825c54c6dd03e3051.png?id=50"},"51":{"title":"生粋の","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/e1c5a05525ecc7eaa5bdf2c121dfce94.png?id=51"},"52":{"title":"成敗ッ!","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/8a255b26a2c0bbe9346cd9831741e1c2.png?id=52"},"53":{"title":"オーラバトル","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/0eb3c8bab6fa7e1a43a69ccd59b1b159.png?id=53"},"54":{"title":"有名人","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/8ebb6884b73535ef7d96db7cdc365c0f.png?id=54"},"55":{"title":"緊急離脱","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/78094778b29eed92aedae9875e6d3071.png?id=55"},"56":{"title":"抑止力","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/5b3e885a9f4a3ed4afbb3192efac252b.png?id=56"},"57":{"title":"ギャップ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/bc430cd772530da2c633269581bba996.png?id=57"},"58":{"title":"木を隠すなら","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/25ab73cb9856911d0ef48aa7420dc35f.png?id=58"},"59":{"title":"フードをかぶれば","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/5b17c7db4c1195ff4c705f3b85a54f90.png?id=59"},"60":{"title":"マイクを置いて","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/b3ac8bb9011dd751db45b74147dd0c05.png?id=60"},"61":{"title":"アマノジャクハート!","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/7c70da3716f8ae6722c0a4cd4b76ff3f.png?id=61"},"62":{"title":"大きな代償","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/67012f1f3a57ede58d329774bcef4e98.png?id=62"},"63":{"title":"幻のケーキ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/784c51122aca62fb085065c4a0f48be8.png?id=63"},"64":{"title":"時には素直に","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/128b6f8504fe7bfeaaf6cfec7828e205.png?id=64"},"65":{"title":"内容が大事","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/f3ec209ee95848a160dfa06bf57ebad7.png?id=65"},"66":{"title":"強さの理由","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/21b395935490aa99e7f812061e6077b8.png?id=66"},"67":{"title":"ヘアアレンジ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/e6424f74b0fe9b2e5261480f3876ed56.png?id=67"},"68":{"title":"強力な助っ人","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/9b6801189cd4885d0e847ade429ffb4b.png?id=68"},"69":{"title":"おままごとアドベンチャー","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/715dd39476865fac385114ac875f500f.png?id=69"},"70":{"title":"風よくうけて","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/0b5fd53de01d0a3505cdc97d175d9d46.png?id=70"},"71":{"title":"解放","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/01e406f4f9f428963f2e607d1861d21d.png?id=71"},"72":{"title":"母なる大地","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/66deb3834faef160fe1d9603e1c946ee.png?id=72"},"73":{"title":"艱難全席","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/17fe13d80bcdf76ab9883d964b8db6a8.png?id=73"},"74":{"title":"藪に向かって乱れ撃ち","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/b6dcbabd59d750b74f5c1cad306ad541.png?id=74"},"75":{"title":"名案","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/9b5533566d0ed4d44c3cccd47a2a8621.png?id=75"},"76":{"title":"隠し味はまだ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/a1d926600da98510a6c739be4aba7dc2.png?id=76"},"77":{"title":"記念品贈呈","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/f355d4c94dc0abdda6f56ce4c03ad5ae.png?id=77"},"78":{"title":"天楼ヲ覇断スル剣","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/b40a1560b2899dca56538ed4bee74bb4.png?id=78"},"79":{"title":"悪の矜持","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/7378e2a46d4cd15097b1ff80351a13f5.png?id=79"},"80":{"title":"負けられない戦い","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/d1357231e0a954cf8cc02bb3074b65e6.png?id=80"},"81":{"title":"どら焼き消失事件(解決編)","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/33d1f55bd3da22072c97fbdc0c82bf7f.png?id=81"},"82":{"title":"容疑者Aの転進","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/33c2b3b33c19cd3bf042787327675ac7.png?id=82"},"83":{"title":"EXIT","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/d93f19b91c92f83d08151780c3355baf.png?id=83"},"84":{"title":"得意を活かして","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/8f4481b639c19904fad9143b805ab76a.png?id=84"},"85":{"title":"足早な補給食","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/15208ccb9c24d636083a3c0de7b87fdc.png?id=86"},"86":{"title":"大事な日課","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/cd565cce487a02bb58c5f48944c8b916.png?id=87"},"87":{"title":"情熱の補給食","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/9945767bcdade7aedaeb60faa2d68903.png?id=88"},"88":{"title":"ずーっと友達!","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/fc7a8866793ff4f3216679dc81a61af6.png?id=89"},"89":{"title":"驚いたこと","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/06a0127798859576a76ec99664386429.png?id=90"},"90":{"title":"教えて!!キャル先生","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/f6e580ffdd993035a4cd188a662386e2.png?id=91"},"91":{"title":"お城での生活","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/111d4431195d211e3c0394ecc4e41d22.png?id=93"},"92":{"title":"プランB","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/8a3fc46e3c172a8a6a81841d3f8cdb38.png?id=94"},"93":{"title":"つまみぐい","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/508b4e54530ea3cf4220378534e534f3.png?id=95"},"94":{"title":"あなたのペースで","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/d9d2627eff995f7d06f705cc4205ae14.png?id=96"},"95":{"title":"むすんでひらいて","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/6fbd5433a4b031bb7df0b2430aaf168b.png?id=97"},"96":{"title":"プロジェクトN","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/8fbc8dba3ce81bbf37b0a3d3d40028f9.png?id=98"},"97":{"title":"価値あるもの","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/0720bb188b2c5eb78d202f91216a3ecc.png?id=99"},"98":{"title":"コノフィツムの花","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/02da1410ea24485b853c31c6aee7aae1.png?id=100"},"99":{"title":"シュバッと参上!","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/1fbb9997aade6faa035e8fae4848465b.png?id=101"},"100":{"title":"猫まっしぐら","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/07880b94f387c6b717e8b6676df67855.png?id=102"},"101":{"title":"責任転じて","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/6b4adc2faf3beff8475ef0bca9cb5f17.png?id=103"},"102":{"title":"憧れの碧空","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/f605a6032fd69e256b99ff236f9f55cc.png?id=104"},"103":{"title":"安全装置","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/d57765c83acdf8f584ddef6f943f4428.png?id=105"},"104":{"title":"もふもふもふもふ?","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/73b5b58645cec3e59ba217a9a3bef352.png?id=106"},"105":{"title":"本気の訓練","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/9e167d9bc3ddafc0df50c1508e0203e6.png?id=107"},"106":{"title":"ロザリアを探して","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/d8a6f340c0b825bcad759cbb911f4a1c.png?id=108"},"107":{"title":"シスターズテレパシー☆","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/12c37f65dc5b2892705fa58c35d246b5.png?id=109"},"108":{"title":"対価","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/2c26f16ba1721bf50ef87316f416c080.png?id=110"},"109":{"title":"翠色の輝き","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/004ff6d30059172ddb4578a34de8bb96.png?id=111"},"110":{"title":"カリスマファンサービス","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/289df339ce2ca58e097c889306681e08.png?id=112"},"111":{"title":"ツボ押しの達人","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/58182cbb7e8b2a7074e2af4e6acb1900.png?id=113"},"112":{"title":"鉄壁のディフェンス","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/dd9bcfc4a0e90ea94360037639116952.png?id=114"},"113":{"title":"暴風雨警報","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/313b486ef5524b8f308a1b69479de303.png?id=115"},"114":{"title":"血ノ盟約-Blut Bund-","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/559902a0b4c09e847a02451ab6da07a9.png?id=116"},"115":{"title":"ワーカホリック","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/03ca88e903790488974c127d21236013.png?id=117"},"116":{"title":"ライバル登場?","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/656dc460961d8b34bc9b03b867c89fd7.png?id=118"},"117":{"title":"Because it's there.","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/06a20eb5d1215c79d2c5197b48722110.png?id=119"},"118":{"title":"My New Gear!","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/b8c35d2d9c505c46824b68895cb70941.png?id=120"},"119":{"title":"美ら海","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/721f0a42435ea82fbb2f3c7b55d15694.png?id=121"},"120":{"title":"泳ぐ時は…","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/4e6a9242be8b0765016739d4a0a4ceda.png?id=122"},"121":{"title":"マホマホブロック","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/ac40e79bd2529b11325bfe41e47297f7.png?id=123"},"122":{"title":"平気だよ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/8d383bfb0a25a5694c15a0398c7098d9.png?id=124"},"123":{"title":"ループコンボ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/63207e823489a109a24e5c41806080f2.png?id=125"},"124":{"title":"ポーカーフェイス","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/589d94616646ca79b7f394dc0f8ca970.png?id=126"},"125":{"title":"イメトレ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/db1855f287347ff4cede15d03458cc49.png?id=127"},"126":{"title":"イメトレの先輩","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/96c7a66e34e52d75985d32718ed7679f.png?id=128"},"127":{"title":"姉は凄技、妹はひ弱","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/2a5002aee33794e2cfe9a9980934d854.png?id=129"},"128":{"title":"イメトレの成果","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/28fb15a7b641646e692325b751f62c69.png?id=130"},"129":{"title":"全力超全開☆","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/7ed6fc8b8c8674c4f7c438fef37df046.png?id=131"},"130":{"title":"耳かきの腕前","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/67c859238f6dc8ce04a36b28f76b4265.png?id=132"},"131":{"title":"勘違いしないで","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/d500a0a41cf88aded231ab710c2be086.png?id=133"},"132":{"title":"トリック・オア・カップケーキ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/66d5325e717e9a73719a76a804a5ff6f.png?id=134"},"133":{"title":"だレもいなイ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/7fefb5264b3e5b2f8f58a90c21f0c295.png?id=135"},"134":{"title":"物足りないっ!","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/47f06c1def25b95b4b74231d3f5d5e8c.png?id=136"},"135":{"title":"ミミおねえちゃん","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/c23ab024752358db2ca6071594266c0c.png?id=137"},"136":{"title":"あーん♪","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/cc2fa16caf5c62bb5ff6c3d53bed3a52.png?id=138"},"137":{"title":"編みかけのマフラー","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/5512fdf3d45ea1e1bc372acfe446e7d2.png?id=139"},"138":{"title":"だったら","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/bb11b6b3caa95b7ae620774210bec896.png?id=140"},"139":{"title":"おともだちになりたくて","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/53f2246143c136b9c62b5215ceb678b7.png?id=141"},"140":{"title":"つんつん","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/3649b21816c16adb0a044ba3a2fd87cd.png?id=142"},"141":{"title":"理想の白馬はん","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/3798dce470a117a65d1b7114fba65241.png?id=143"},"142":{"title":"覚醒の条件","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/06636e8a4da36fd3db4a4e88e238be16.png?id=144"},"143":{"title":"どうする?","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/e3367452bd0db1e8b84b3d5cbf054630.png?id=145"},"144":{"title":"一緒におままごと","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/55ca1b3298901ee815c811a024b92d04.png?id=146"},"145":{"title":"大切なのは","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/18fa5ade0d1752a824c5801042022b4f.png?id=147"},"146":{"title":"影武者","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/0a1567c3a890690b59d08ace99a75753.png?id=148"},"147":{"title":"それってつまり…","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/4140540a57aad0cdce37147239deee63.png?id=149"},"148":{"title":"すべての道は","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/1ba7c3ded1f98a075f22e0522db31b0d.png?id=150"},"149":{"title":"普段は","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/ddf85cb39caa18f9cfd0f09c562509c0.png?id=151"},"150":{"title":"支配者として","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/7cc8ef616d813c2bcd070b378119f18a.png?id=152"},"151":{"title":"恋愛相談のプロ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/39d0a1c064c0f59144172572e326bd2e.png?id=153"},"152":{"title":"特別なおせち","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/4468affb06498cd254f922901852d3f8.png?id=154"},"153":{"title":"ぐいぐいぎゅうぎゅう","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/1f8adf7a1fd8c03160407ec30b443ead.png?id=155"},"154":{"title":"スズメの才能","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/82415f9ab591196236c14cfc6eed7a8c.png?id=156"},"155":{"title":"HURRY UP!!","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/d10b6a000c7f45c38c6dc493ac6d1e16.png?id=157"},"156":{"title":"行列のできる","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/9f8d3f53ce8cd2296468ffdd1e945be8.png?id=158"},"157":{"title":"共鳴する魂","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/bb7ae03b94d90a20957780abe2b4e610.png?id=159"},"158":{"title":"イメージするのは…","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/719d3df819eee606e22f1d9883ec421f.png?id=160"},"159":{"title":"変わり続けるボク","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/02a9e5809a5e50463cc7c59a41cc9113.png?id=161"},"160":{"title":"ミスティ&ピュアリー","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/1bd885e91d87258798de49f6e99dd341.png?id=162"},"161":{"title":"ミスティの魔法","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/feca603f50f6204ffe2296e2a2b353a0.png?id=163"},"162":{"title":"ピュアリーな魔法","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/9683cefdefbdd3dfbaa2f00935df9889.png?id=164"},"163":{"title":"絆の証?","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/c8896e670d0e3caaad29d1af101ed78d.png?id=165"},"164":{"title":"わくわくクッキング","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/142de2000e54d710f6073c071a9f3c9b.png?id=166"},"165":{"title":"いつの間にかこんなにも","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/b2b31c7c2db790af11e0c1154d868cd7.png?id=167"},"166":{"title":"闇のお姉ちゃん","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/7fe83b1047783b155a2eb3b29ce5d8cf.png?id=168"},"167":{"title":"果て無き冒険魂","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/d3c68d6ccd6ef2d42c30db6d73ad4ce4.png?id=170"},"168":{"title":"スーパースターの素質","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/2fe9cc3f915b94eae8834e4ffd4fe439.png?id=171"},"169":{"title":"道案内","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/c90f2ec8715cd0429b0d6f62f29be379.png?id=172"},"170":{"title":"ゴクアクヒドウ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/705fef8f7b0bd4e70d253c3aa2d89019.png?id=173"},"171":{"title":"応援中!","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/8b269eea221ac760620c6dc2db6e583b.png?id=174"},"172":{"title":"もっと聞かせて","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/49db0b37552d0092729a472ac10d29ff.png?id=175"},"173":{"title":"より強く、更に高みへ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/3159ef2c51873bef36ae4ed045a40039.png?id=176"},"174":{"title":"浪漫武器","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/11fac43849d95cb82de245be080dc452.png?id=177"},"175":{"title":"商品開発会議","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/10257d7d6d593ab6b725e35064626eed.png?id=178"},"176":{"title":"足りないもの","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/e5ac8fc9f160986f58fdd17709c57f9e.png?id=179"},"177":{"title":"めちゃちぇる","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/1a123cbdb48df523146747676406f4ea.png?id=180"},"178":{"title":"どんなところでも","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/4078f4cb15a95f29afd842a3293969a6.png?id=181"},"179":{"title":"今回だけ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/9ac67c9962ef875ba5958e73f27a5513.png?id=182"},"180":{"title":"どんと・ぶりーず","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/6837046c545b9b7fff08d1438897cad8.png?id=183"},"181":{"title":"ブカブカピカピカ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/d742dfc13814b34e1a4b10183b24edde.png?id=184"},"182":{"title":"牧場アイドル","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/02f6076b0f6c6b15d0cbd151a3b5d57e.png?id=185"},"183":{"title":"こっちにいます","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/f7cf7386fdfe49d74273cb38289a53cb.png?id=186"},"184":{"title":"燃えてファーマー","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/8b39696dd01be25ab27ceb304c4bccb4.png?id=187"},"185":{"title":"ダンシングキャッツ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/7f6826b483b2c811676d48d9bf0e7761.png?id=188"},"186":{"title":"続くよどこまでも","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/d6457fc7c575d91cbdc56baa6a0641eb.png?id=189"},"187":{"title":"苦手なものと苦手なもの","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/5cd89fecbc19e5f499f2ce035878eccc.png?id=190"},"188":{"title":"仲間との絆","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/f73f8f283142cacbcc8b4b22a341b2c1.png?id=191"},"189":{"title":"あなたの声はどこから?","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/3a13d019d3193887d3269e9b5c6521b0.png?id=192"},"190":{"title":"救世主の力","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/67669d40dda0a98c12d3aaffe4174d13.png?id=193"},"191":{"title":"視認性","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/918c68204e4349fc11012e619bf70ebf.png?id=194"},"192":{"title":"騙されません","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/44f08d5403ca1ddf83c10d153dc8eb64.png?id=195"},"193":{"title":"武勇伝","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/91b14fb6f9192de4ecea001595735c2c.png?id=196"},"194":{"title":"見えなくても","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/301fb94ae6a5dc1baae46acff71e4ccd.png?id=197"},"195":{"title":"胃袋を…","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/879c28a0cb71553cd7170cee097427c1.png?id=198"},"198":{"title":"全海ノ支配者-Leviathan-","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/78be92c45559959f1db03a4cf4a95652.png?id=201"},"199":{"title":"ぐうたら力","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/f142ed7ef869b9249898ff06b4156bef.png?id=202"},"200":{"title":"封印されし邪眼","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/9c439688e78b97640084f38ac2fecdac.png?id=203"},"201":{"title":"おねえちゃんパワー","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/b8a6394167252900977ef5b67fb51ac0.png?id=204"},"209":{"title":"迷宮女王復活","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/01bee34f76c7401118949bd911da8275.png?id=212"},"210":{"title":"エンジェリックアローパワー","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/4938807bf8f581b89891d5c84253f955.png?id=213"},"211":{"title":"エンジェル活動!","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/f69cc7e6d567e3461cf5f52dcc92f694.png?id=214"},"212":{"title":"オ・ト・ナ❤コーデ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/10426d451f37b47094eed5375e2b2e3e.png?id=215"},"213":{"title":"闇と光","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/a5659fff37ced44a6ca679475687ba91.png?id=216"},"214":{"title":"お嬢様の苦悩(前編)","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/c71defeda0820c124cc28b9f871a5f4b.png?id=217"},"215":{"title":"お嬢様の苦悩(後編)","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/edad6bc871373bacd970c6519712c4a6.png?id=218"},"216":{"title":"灰燼に帰す","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/a22a75f55dd463e21964b6abe16fbef5.png?id=219"},"217":{"title":"本当の悲鳴","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/773fdf54a233bb9ec1e8bc68c6e151b5.png?id=220"},"218":{"title":"マツリ・タイガーフォーム","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/8acd9d3c4f2aea706c4ca949369081a8.png?id=221"},"219":{"title":"次は……","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/8b1e7b3e6ab8703d2bcc5270071fa144.png?id=222"},"220":{"title":"一点集中","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/8d576bc2412bbcae5953397d6e53a5b0.png?id=223"},"221":{"title":"新しいステップ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/176b962f867e50ee8e90663550c0cafa.png?id=224"},"222":{"title":"おかわり","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/10ba44952438be2beb5decb997828248.png?id=225"},"223":{"title":"歌に合わせて","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/b9d954179d549d9ef3b6e850a88cbb92.png?id=226"},"337":{"title":"美味しいご飯のために","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/7d07939d3e42ea036a1b9c185b30b954.png?id=345"},"338":{"title":"『協力』の大切さ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/a1593e983f604a69576d86cc959e594a.png?id=346"},"339":{"title":"にぎやかな日々の終わり","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/1bf91efbe8dedc4edb89119cf19da1c0.png?id=347"},"340":{"title":"独演会","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/b04fd7a48befb06b8455c6c219b132fb.png?id=348"},"341":{"title":"ワクワク海遊び","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/cb7db1b122c0bd0b17bf19cfc136d8cf.png?id=349"},"342":{"title":"狙われるチーズ","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/3937fd7d5e20e9b8a9acc7cf80312f8a.png?id=350"},"343":{"title":"異世界転生美少女?","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/b4cc8410995c6d7feb9f24e85d76c668.png?id=351"},"344":{"title":"天国かも","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/545fa09b7f6b803d1f24395da2752009.png?id=352"},"345":{"title":"迷子の美少女","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/a9d79dc698e669be014a0a8349960e28.png?id=353"},"346":{"title":"無自覚な?","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/a30c4f896589a546f9e29075844074f4.png?id=354"},"347":{"title":"人探し","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/f3efddf1833dc3bf32c00f601b32db49.png?id=355"},"348":{"title":"やっぱり無自覚な?","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/c3ef25e9a1217877cd0f11bd299fbe4c.png?id=356"},"349":{"title":"新☆決めポーズ!","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/e590bf6983e7e5c0e163b6b78718c0d6.png?id=357"},"350":{"title":"左右のバランス","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/79afab896398de5b1b8d2e3f1cfe71e3.png?id=358"},"351":{"title":"効率的武器利用","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/dde2702cebd796bec812bf7684228013.png?id=359"},"352":{"title":"秘密の乙女たち","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/2cbccbe1be171b0088fc1a3f4d9a4252.png?id=360"},"353":{"title":"特技を活かして","link":"https:\/\/comic.priconne-redive.jp\/media\/cartoon\/image\/abed6dd0b05fea8cda3a86c23f99b131.png?id=361"}} \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_0.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_0.png deleted file mode 100644 index 2623bc0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_0.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_1.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_1.png deleted file mode 100644 index 058fb1a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_1.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_10.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_10.png deleted file mode 100644 index 35339dd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_10.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_11.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_11.png deleted file mode 100644 index 64dbffd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_11.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_12.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_12.png deleted file mode 100644 index 0e4b97c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_12.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_13.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_13.png deleted file mode 100644 index 7c79544..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_13.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_14.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_14.png deleted file mode 100644 index 0768954..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_14.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_15.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_15.png deleted file mode 100644 index a096f74..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_15.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_16.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_16.png deleted file mode 100644 index bbdff3a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_16.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_17.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_17.png deleted file mode 100644 index c1de20c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_17.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_18.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_18.png deleted file mode 100644 index d15e619..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_18.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_19.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_19.png deleted file mode 100644 index 73713bd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_19.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_2.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_2.png deleted file mode 100644 index 1613c32..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_2.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_20.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_20.png deleted file mode 100644 index 52c4939..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_20.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_21.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_21.png deleted file mode 100644 index dc89322..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_21.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_22.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_22.png deleted file mode 100644 index 6f7cbd9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_22.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_23.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_23.png deleted file mode 100644 index 7af811c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_23.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_24.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_24.png deleted file mode 100644 index 66e2149..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_24.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_25.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_25.png deleted file mode 100644 index c4e2298..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_25.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_3.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_3.png deleted file mode 100644 index 952f8ae..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_3.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_4.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_4.png deleted file mode 100644 index 4ff045c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_4.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_5.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_5.png deleted file mode 100644 index dfe541e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_5.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_6.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_6.png deleted file mode 100644 index 51981df..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_6.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_7.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_7.png deleted file mode 100644 index 4ba473a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_7.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_8.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_8.png deleted file mode 100644 index 2845a7c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_8.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_9.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_9.png deleted file mode 100644 index 7ee731c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/find/icon_unit_9.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/equip.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/equip.png deleted file mode 100644 index 72c8e97..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/equip.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/kokkoro_stamp.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/kokkoro_stamp.png deleted file mode 100644 index 7e63710..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/kokkoro_stamp.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/star.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/star.png deleted file mode 100644 index 3b7e03f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/star.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/star_disabled.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/star_disabled.png deleted file mode 100644 index 4914bd0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/star_disabled.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/star_pink.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/star_pink.png deleted file mode 100644 index 957de2b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/star_pink.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/thumb-down-a.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/thumb-down-a.png deleted file mode 100644 index 672bc77..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/thumb-down-a.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/thumb-down-i.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/thumb-down-i.png deleted file mode 100644 index dd16f78..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/thumb-down-i.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/thumb-up-a.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/thumb-up-a.png deleted file mode 100644 index 9f934cc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/thumb-up-a.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/thumb-up-i.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/thumb-up-i.png deleted file mode 100644 index f6b519d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/gadget/thumb-up-i.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/icon_unit_112931.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/icon_unit_112931.png deleted file mode 100644 index 5e66537..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/icon_unit_112931.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/kokkoro_stamp.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/kokkoro_stamp.png deleted file mode 100644 index 32acd0d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/kokkoro_stamp.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/newyearburst.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/newyearburst.jpg deleted file mode 100644 index 9146be9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/newyearburst.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/R16-4.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/R16-4.png deleted file mode 100644 index 2126a56..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/R16-4.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/kokkoro_stamp.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/kokkoro_stamp.png deleted file mode 100644 index 7e63710..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/kokkoro_stamp.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/quick.rar b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/quick.rar deleted file mode 100644 index 7f1fd97..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/quick.rar and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r15-5-0.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r15-5-0.png deleted file mode 100644 index 2287c12..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r15-5-0.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r15-5.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r15-5.png deleted file mode 100644 index df056ab..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r15-5.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r16-4-tw-0.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r16-4-tw-0.png deleted file mode 100644 index 2126a56..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r16-4-tw-0.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r16-4-tw-1.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r16-4-tw-1.png deleted file mode 100644 index 6f0ce7c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r16-4-tw-1.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r16-5-1.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r16-5-1.png deleted file mode 100644 index 6f49741..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r16-5-1.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r16-5-2.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r16-5-2.png deleted file mode 100644 index ec82bac..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r16-5-2.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r16-5-3.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r16-5-3.png deleted file mode 100644 index ac85693..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r16-5-3.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r17-3-jp-1.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r17-3-jp-1.png deleted file mode 100644 index 2bfcd71..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r17-3-jp-1.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r17-3-jp-2.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r17-3-jp-2.png deleted file mode 100644 index 272563a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r17-3-jp-2.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r17-3-jp-3.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r17-3-jp-3.png deleted file mode 100644 index 1eea3d2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r17-3-jp-3.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r8-3.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r8-3.jpg deleted file mode 100644 index 7d99540..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r8-3.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r9-5-cn.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r9-5-cn.png deleted file mode 100644 index b235c1f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/r9-5-cn.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/中卫.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/中卫.png deleted file mode 100644 index 4339fcc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/中卫.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/前卫.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/前卫.png deleted file mode 100644 index d1899bc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/前卫.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/台6月rank.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/台6月rank.jpg deleted file mode 100644 index c9feecb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/台6月rank.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/后卫.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/后卫.png deleted file mode 100644 index 66b8f24..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/后卫.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/国服.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/国服.png deleted file mode 100644 index 51dd8de..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/国服.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/黄骑充电.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/黄骑充电.jpg deleted file mode 100644 index 1493126..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/quick/黄骑充电.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/spider.py b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/spider.py deleted file mode 100644 index 10d9d72..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/spider.py +++ /dev/null @@ -1,89 +0,0 @@ -import os -import re -import time -import json -import requests -from urllib.parse import urlparse, urlunparse -from requests.compat import quote, urljoin -from PIL import Image -from io import BytesIO - -class Spider(object): - - def download_img(self, save_path, link): - print('download_img from ', link, end=' ') - resp = requests.get(link, stream=True) - print('status_code=', resp.status_code, end=' ') - if 200 == resp.status_code: - if re.search(r'image', resp.headers['content-type'], re.I): - print(f'is image, saving to {save_path}', end=' ') - img = Image.open(BytesIO(resp.content)) - img.save(save_path) - print('ok', end=' ') - - - def download_icon_unit(self, start=1001, end=1200, star=3): - base = 'https://redive.estertion.win/icon/unit/' - save_dir = './unit/' - os.makedirs(save_dir, exist_ok=True) - - def get_pic_name(pic_id, pre, end): - return f'{pre}{pic_id:0>4d}{end}' - - - for i in range(start, end): - src_n = get_pic_name(i, '', f'{star}1.webp') - dst_n = get_pic_name(i, 'icon_unit_', f'{star}1.png') - self.download_img(os.path.join(save_dir, dst_n), urljoin(base, src_n)) - time.sleep(0.5) - print('\n', end='') - - - def download_comic(self, start=1, end=200, only_index=False): - base = 'https://comic.priconne-redive.jp/api/detail/' - save_dir = './comic/' - os.makedirs(save_dir, exist_ok=True) - - def get_pic_name(id_): - pre = 'episode_' - end = '.png' - return f'{pre}{id_}{end}' - - index = {} - - for i in range(start, end): - print('getting comic', i, '...', end=' ') - url = base + str(i) - print('url=', url, end=' ') - resp = requests.get(url) - print('status_code=', resp.status_code) - if 200 != resp.status_code: - continue - data = resp.json()[0] - - # if data['current_index'] != False: - episode = data['episode_num'] - title = data['title'] - link = data['cartoon'] - index[episode] = {'title': title, 'link': link} - print(index[episode]) - if not only_index: - self.download_img(os.path.join(save_dir, get_pic_name(episode)), link) - time.sleep(0.1) - print('\n', end='') - # else: - # print('current_index not True, ignore') - - with open(os.path.join(save_dir, 'index.json'), 'w', encoding='utf8') as f: - json.dump(index, f, ensure_ascii=False) - - -if __name__ == '__main__': - spider = Spider() - # 运行过程出现404和200属正常情况 - spider.download_icon_unit(start=1700 end=1702, star=3) - #spider.download_icon_unit(start=8999, end=9001, star=1) - #spider.download_icon_unit(start=1030, end=1040, star=6) - #spider.download_icon_unit(start=1804, end=1809, star=3) - # 如果需要爬取漫画,取消掉下面的这行注释 - # spider.download_comic(start=1, end=200, only_index=False) diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/spider_shadow.py b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/spider_shadow.py deleted file mode 100644 index d303643..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/spider_shadow.py +++ /dev/null @@ -1,89 +0,0 @@ -import os -import re -import time -import json -import requests -from urllib.parse import urlparse, urlunparse -from requests.compat import quote, urljoin -from PIL import Image -from io import BytesIO - -class Spider(object): - - def download_img(self, save_path, link): - print('download_img from ', link, end=' ') - resp = requests.get(link, stream=True) - print('status_code=', resp.status_code, end=' ') - if 200 == resp.status_code: - if re.search(r'image', resp.headers['content-type'], re.I): - print(f'is image, saving to {save_path}', end=' ') - img = Image.open(BytesIO(resp.content)) - img.save(save_path) - print('ok', end=' ') - - - def download_icon_unit(self, start=1001, end=1200, star=3): - base = 'https://redive.estertion.win/icon/unit_shadow/' - save_dir = './unit_shadow/' - os.makedirs(save_dir, exist_ok=True) - - def get_pic_name(pic_id, pre, end): - return f'{pre}{pic_id:0>4d}{end}' - - - for i in range(start, end): - src_n = get_pic_name(i, '', f'{star}1.webp') - dst_n = get_pic_name(i, 'icon_unit_', f'{star}1.png') - self.download_img(os.path.join(save_dir, dst_n), urljoin(base, src_n)) - time.sleep(0.5) - print('\n', end='') - - - def download_comic(self, start=1, end=200, only_index=False): - base = 'https://comic.priconne-redive.jp/api/detail/' - save_dir = './comic/' - os.makedirs(save_dir, exist_ok=True) - - def get_pic_name(id_): - pre = 'episode_' - end = '.png' - return f'{pre}{id_}{end}' - - index = {} - - for i in range(start, end): - print('getting comic', i, '...', end=' ') - url = base + str(i) - print('url=', url, end=' ') - resp = requests.get(url) - print('status_code=', resp.status_code) - if 200 != resp.status_code: - continue - data = resp.json()[0] - - # if data['current_index'] != False: - episode = data['episode_num'] - title = data['title'] - link = data['cartoon'] - index[episode] = {'title': title, 'link': link} - print(index[episode]) - if not only_index: - self.download_img(os.path.join(save_dir, get_pic_name(episode)), link) - time.sleep(0.1) - print('\n', end='') - # else: - # print('current_index not True, ignore') - - with open(os.path.join(save_dir, 'index.json'), 'w', encoding='utf8') as f: - json.dump(index, f, ensure_ascii=False) - - -if __name__ == '__main__': - spider = Spider() - # 运行过程出现404和200属正常情况 - spider.download_icon_unit(start=1113, end=1115, star=3) - #spider.download_icon_unit(start=1001, end=1038, star=1) - #spider.download_icon_unit(start=1001, end=1040, star=6) - #spider.download_icon_unit(start=1800, end=1809, star=3) - # 如果需要爬取漫画,取消掉下面的这行注释 - # spider.download_comic(start=1, end=200, only_index=False) diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/spider_unique.py b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/spider_unique.py deleted file mode 100644 index 6ce8383..0000000 --- a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/spider_unique.py +++ /dev/null @@ -1,89 +0,0 @@ -import os -import re -import time -import json -import requests -from urllib.parse import urlparse, urlunparse -from requests.compat import quote, urljoin -from PIL import Image -from io import BytesIO - -class Spider(object): - - def download_img(self, save_path, link): - print('download_img from ', link, end=' ') - resp = requests.get(link, stream=True) - print('status_code=', resp.status_code, end=' ') - if 200 == resp.status_code: - if re.search(r'image', resp.headers['content-type'], re.I): - print(f'is image, saving to {save_path}', end=' ') - img = Image.open(BytesIO(resp.content)) - img.save(save_path) - print('ok', end=' ') - - - def download_icon_unit(self, start=1001, end=1200, star=3): - base = 'https://redive.estertion.win/icon/unit/' - save_dir = './unit/' - os.makedirs(save_dir, exist_ok=True) - - def get_pic_name(pic_id, pre, end): - return f'{pre}{pic_id:0>4d}{end}' - - - for i in range(start, end): - src_n = get_pic_name(i, '', f'{star}0.webp') - dst_n = get_pic_name(i, 'icon_unit_', f'{star}0.png') - self.download_img(os.path.join(save_dir, dst_n), urljoin(base, src_n)) - time.sleep(0.5) - print('\n', end='') - - - def download_comic(self, start=1, end=200, only_index=False): - base = 'https://comic.priconne-redive.jp/api/detail/' - save_dir = './comic/' - os.makedirs(save_dir, exist_ok=True) - - def get_pic_name(id_): - pre = 'episode_' - end = '.png' - return f'{pre}{id_}{end}' - - index = {} - - for i in range(start, end): - print('getting comic', i, '...', end=' ') - url = base + str(i) - print('url=', url, end=' ') - resp = requests.get(url) - print('status_code=', resp.status_code) - if 200 != resp.status_code: - continue - data = resp.json()[0] - - # if data['current_index'] != False: - episode = data['episode_num'] - title = data['title'] - link = data['cartoon'] - index[episode] = {'title': title, 'link': link} - print(index[episode]) - if not only_index: - self.download_img(os.path.join(save_dir, get_pic_name(episode)), link) - time.sleep(0.1) - print('\n', end='') - # else: - # print('current_index not True, ignore') - - with open(os.path.join(save_dir, 'index.json'), 'w', encoding='utf8') as f: - json.dump(index, f, ensure_ascii=False) - - -if __name__ == '__main__': - spider = Spider() - # 运行过程出现404和200属正常情况 - spider.download_icon_unit(start=3901, end=3902, star=0) - #spider.download_icon_unit(start=8999, end=9001, star=1) - #spider.download_icon_unit(start=1030, end=1040, star=6) - #spider.download_icon_unit(start=1804, end=1809, star=3) - # 如果需要爬取漫画,取消掉下面的这行注释 - # spider.download_comic(start=1, end=200, only_index=False) diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/cropped_avatar.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/cropped_avatar.png deleted file mode 100644 index b5d3162..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/cropped_avatar.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_002412.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_002412.png deleted file mode 100644 index 91f9ce9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_002412.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100031.png deleted file mode 100644 index df15196..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100111.png deleted file mode 100644 index 6d53494..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100131.png deleted file mode 100644 index 325c07b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100161.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100161.png deleted file mode 100644 index 182add9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100161.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100211.png deleted file mode 100644 index 24ac5f2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100231.png deleted file mode 100644 index 03f7920..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100261.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100261.png deleted file mode 100644 index fc35680..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100261.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100311.png deleted file mode 100644 index 19a3ffb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100331.png deleted file mode 100644 index b8d41dc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100361.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100361.png deleted file mode 100644 index 1206316..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100361.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100411.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100411.png deleted file mode 100644 index f2783f4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100411.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100431.png deleted file mode 100644 index 23f3af5..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100511.png deleted file mode 100644 index 30e12d8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100531.png deleted file mode 100644 index e84fd3e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100611.png deleted file mode 100644 index f82f00c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100631.png deleted file mode 100644 index 88977f2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100661.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100661.png deleted file mode 100644 index 708bf5e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100661.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100711.png deleted file mode 100644 index f060b9c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100731.png deleted file mode 100644 index 2755c8b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100811.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100811.png deleted file mode 100644 index c693d28..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100811.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100831.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100831.png deleted file mode 100644 index 55c35f9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100831.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100911.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100911.png deleted file mode 100644 index 2183185..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100911.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100931.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100931.png deleted file mode 100644 index 1e4133a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_100931.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101011.png deleted file mode 100644 index 07ae6cd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101031.png deleted file mode 100644 index 6e08342..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101061.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101061.png deleted file mode 100644 index 5c29356..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101061.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101111.png deleted file mode 100644 index c37a120..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101131.png deleted file mode 100644 index 29b9064..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101161.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101161.png deleted file mode 100644 index f348c3f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101161.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101211.png deleted file mode 100644 index 7a5d207..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101231.png deleted file mode 100644 index dfe2173..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101261.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101261.png deleted file mode 100644 index ebd9dea..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101261.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101311.png deleted file mode 100644 index 304b3d0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101331.png deleted file mode 100644 index 38d65e8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101411.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101411.png deleted file mode 100644 index 5d6f5a4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101411.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101431.png deleted file mode 100644 index bcb4a4c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101511.png deleted file mode 100644 index 87bfc7c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101531.png deleted file mode 100644 index be51aca..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101611.png deleted file mode 100644 index fca1e2a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101631.png deleted file mode 100644 index 491deae..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101661.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101661.png deleted file mode 100644 index 4186064..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101661.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101711.png deleted file mode 100644 index 5dcd529..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101731.png deleted file mode 100644 index cf4e816..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101811.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101811.png deleted file mode 100644 index c9e9c16..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101811.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101831.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101831.png deleted file mode 100644 index 15d67d9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101831.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101861.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101861.png deleted file mode 100644 index 4aa4102..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_101861.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102011.png deleted file mode 100644 index e8fbebe..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102031.png deleted file mode 100644 index 7d15560..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102111.png deleted file mode 100644 index bf4a443..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102131.png deleted file mode 100644 index 4d2ac47..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102211.png deleted file mode 100644 index b132c4e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102231.png deleted file mode 100644 index 73c9f4d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102311.png deleted file mode 100644 index 87c3ccc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102331.png deleted file mode 100644 index e3fceb2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102361.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102361.png deleted file mode 100644 index 5cdfbb9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102361.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102511.png deleted file mode 100644 index a850bba..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102531.png deleted file mode 100644 index 85768ad..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102611.png deleted file mode 100644 index 59b8ff2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102631.png deleted file mode 100644 index 4579dbd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102711.png deleted file mode 100644 index 2afb8cc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102731.png deleted file mode 100644 index c616b74..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102811.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102811.png deleted file mode 100644 index 91ff648..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102811.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102831.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102831.png deleted file mode 100644 index 3cdedc0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102831.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102861.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102861.png deleted file mode 100644 index 93c373f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102861.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102911.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102911.png deleted file mode 100644 index 8443b10..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102911.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102931.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102931.png deleted file mode 100644 index bee4755..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_102931.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103011.png deleted file mode 100644 index b125d42..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103031.png deleted file mode 100644 index 3a66352..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103061.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103061.png deleted file mode 100644 index 6e919a9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103061.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103111.png deleted file mode 100644 index 0349ea7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103131.png deleted file mode 100644 index 0fee254..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103211.png deleted file mode 100644 index 1e729b9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103231.png deleted file mode 100644 index f2c7f0d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103261.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103261.png deleted file mode 100644 index ab1d52e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103261.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103311.png deleted file mode 100644 index 56f2f54..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103331.png deleted file mode 100644 index 3fca82f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103361.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103361.png deleted file mode 100644 index aaf1b3e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103361.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103411.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103411.png deleted file mode 100644 index b3e8952..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103411.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103431.png deleted file mode 100644 index 69f04bc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103461.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103461.png deleted file mode 100644 index e5429f6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103461.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103611.png deleted file mode 100644 index b6ed87b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103631.png deleted file mode 100644 index 150aaaf..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103711.png deleted file mode 100644 index 3a5a495..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103731.png deleted file mode 100644 index e4bb48b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103811.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103811.png deleted file mode 100644 index fa09e1b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103811.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103831.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103831.png deleted file mode 100644 index c468c01..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_103831.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104011.png deleted file mode 100644 index 33197a7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104031.png deleted file mode 100644 index 889498b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104211.png deleted file mode 100644 index 9134b0b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104231.png deleted file mode 100644 index 8689de0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104311.png deleted file mode 100644 index fb007fc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104331.png deleted file mode 100644 index 64824d0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104411.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104411.png deleted file mode 100644 index 5529124..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104411.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104431.png deleted file mode 100644 index 05339f6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104511.png deleted file mode 100644 index 5e9d4fe..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104531.png deleted file mode 100644 index be62729..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104611.png deleted file mode 100644 index 1efdefb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104631.png deleted file mode 100644 index 9068f81..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104661.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104661.png deleted file mode 100644 index 419e5bc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104661.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104711.png deleted file mode 100644 index 0191bf1..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104731.png deleted file mode 100644 index e37d1cd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104811.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104811.png deleted file mode 100644 index e7f887f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104811.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104831.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104831.png deleted file mode 100644 index 57f802e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104831.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104861.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104861.png deleted file mode 100644 index 3594a5d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104861.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104911.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104911.png deleted file mode 100644 index a13d445..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104911.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104931.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104931.png deleted file mode 100644 index c09fecc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104931.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104961.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104961.png deleted file mode 100644 index 8f1bfb3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_104961.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105011.png deleted file mode 100644 index da3d02d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105031.png deleted file mode 100644 index e128d0a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105111.png deleted file mode 100644 index 7b032e5..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105131.png deleted file mode 100644 index 3cdcede..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105211.png deleted file mode 100644 index db61a27..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105231.png deleted file mode 100644 index 01eb3c3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105261.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105261.png deleted file mode 100644 index 5ebb9da..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105261.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105311.png deleted file mode 100644 index cc0b5a0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105331.png deleted file mode 100644 index cef3c8e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105411.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105411.png deleted file mode 100644 index 4e98cc4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105411.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105431.png deleted file mode 100644 index c15aa44..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105511.png deleted file mode 100644 index fd204a5..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105531.png deleted file mode 100644 index 91aba67..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105611.png deleted file mode 100644 index 22c59c2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105631.png deleted file mode 100644 index 395ffa2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105711.png deleted file mode 100644 index 3a5b88f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105731.png deleted file mode 100644 index 8ed21e3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105811.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105811.png deleted file mode 100644 index 485c00f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105811.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105831.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105831.png deleted file mode 100644 index b4f22b2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105831.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105861.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105861.png deleted file mode 100644 index 609b407..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105861.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105911.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105911.png deleted file mode 100644 index 87f53f6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105911.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105931.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105931.png deleted file mode 100644 index 5206cb5..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105931.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105961.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105961.png deleted file mode 100644 index 1d6230a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_105961.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106011.png deleted file mode 100644 index 5a5a0a6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106031.png deleted file mode 100644 index 966805e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106061.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106061.png deleted file mode 100644 index 94c84a4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106061.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106111.png deleted file mode 100644 index 6a97228..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106131.png deleted file mode 100644 index 8e0d13b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106211.png deleted file mode 100644 index 95f5a8e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106231.png deleted file mode 100644 index 4094009..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106311.png deleted file mode 100644 index cb8f1a3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106331.png deleted file mode 100644 index 4a13514..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106411.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106411.png deleted file mode 100644 index 5591420..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106411.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106431.png deleted file mode 100644 index 8b55462..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106511.png deleted file mode 100644 index be83dcd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106531.png deleted file mode 100644 index 035b9d2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106611.png deleted file mode 100644 index 99016be..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106631.png deleted file mode 100644 index 5784644..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106711.png deleted file mode 100644 index 18830cf..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106731.png deleted file mode 100644 index 18830cf..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106811.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106811.png deleted file mode 100644 index f02571d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106811.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106831.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106831.png deleted file mode 100644 index 4793270..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106831.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106911.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106911.png deleted file mode 100644 index 6d1aa6c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106911.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106931.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106931.png deleted file mode 100644 index 609d880..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_106931.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107011.png deleted file mode 100644 index 83bb381..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107031.png deleted file mode 100644 index aead89e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107111.png deleted file mode 100644 index 6a5ac0f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107131.png deleted file mode 100644 index c7d43e1..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107311.png deleted file mode 100644 index dbca915..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107331.png deleted file mode 100644 index b28fb04..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107511.png deleted file mode 100644 index 8a0fbf2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107531.png deleted file mode 100644 index 34eed3b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107611.png deleted file mode 100644 index 1e601a7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107631.png deleted file mode 100644 index b4e4b31..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107711.png deleted file mode 100644 index 551b53c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107731.png deleted file mode 100644 index 110bdc5..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107811.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107811.png deleted file mode 100644 index c241781..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107811.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107831.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107831.png deleted file mode 100644 index acbd724..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107831.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107911.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107911.png deleted file mode 100644 index 70ca0b4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107911.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107931.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107931.png deleted file mode 100644 index 159fcc3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_107931.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108011.png deleted file mode 100644 index df65fc2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108031.png deleted file mode 100644 index 311f8be..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108111.png deleted file mode 100644 index 9337769..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108131.png deleted file mode 100644 index 39823cc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108211.png deleted file mode 100644 index df34bc6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108231.png deleted file mode 100644 index 11e28af..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108311.png deleted file mode 100644 index 44c3c3b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108331.png deleted file mode 100644 index e832b09..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108411.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108411.png deleted file mode 100644 index abd184e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108411.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108431.png deleted file mode 100644 index a2b9a1c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108511.png deleted file mode 100644 index 815a00c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108531.png deleted file mode 100644 index ad7572b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108611.png deleted file mode 100644 index 06bd3b4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108631.png deleted file mode 100644 index 7e85dd2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108711.png deleted file mode 100644 index b8d982d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108731.png deleted file mode 100644 index b3d317b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108811.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108811.png deleted file mode 100644 index b8c00ca..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108811.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108831.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108831.png deleted file mode 100644 index 59595de..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108831.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108911.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108911.png deleted file mode 100644 index 89bfc00..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108911.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108931.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108931.png deleted file mode 100644 index 5b36dd0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_108931.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109011.png deleted file mode 100644 index 79dde67..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109031.png deleted file mode 100644 index 1a93531..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109111.png deleted file mode 100644 index ca7c833..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109131.png deleted file mode 100644 index becbc59..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109211.png deleted file mode 100644 index 29ee780..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109231.png deleted file mode 100644 index 62bd038..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109311.png deleted file mode 100644 index 1c1000a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109331.png deleted file mode 100644 index 15e6890..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109411.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109411.png deleted file mode 100644 index c4a1b38..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109411.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109431.png deleted file mode 100644 index 700eafc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109511.png deleted file mode 100644 index eeececb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109531.png deleted file mode 100644 index a72b88d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109611.png deleted file mode 100644 index 1ada3df..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109631.png deleted file mode 100644 index b84fc9b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109711.png deleted file mode 100644 index da1db26..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109731.png deleted file mode 100644 index 00db87f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109811.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109811.png deleted file mode 100644 index 5ed14e5..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109811.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109831.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109831.png deleted file mode 100644 index 9345aa7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109831.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109911.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109911.png deleted file mode 100644 index 971e7cf..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109911.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109931.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109931.png deleted file mode 100644 index 22238af..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_109931.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110011.png deleted file mode 100644 index 33cf572..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110031.png deleted file mode 100644 index 049e25c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110111.png deleted file mode 100644 index 44c28de..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110131.png deleted file mode 100644 index a7197f6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110231.png deleted file mode 100644 index 4d0b0a2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110311.png deleted file mode 100644 index a099c19..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110331.png deleted file mode 100644 index d57c59c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110411.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110411.png deleted file mode 100644 index a4ae0bb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110411.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110431.png deleted file mode 100644 index 3b6ea41..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110511.png deleted file mode 100644 index e0212dd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110531.png deleted file mode 100644 index 84b849d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110611.png deleted file mode 100644 index 079828c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110631.png deleted file mode 100644 index 4b8658b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110711.png deleted file mode 100644 index 0cef712..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110731.png deleted file mode 100644 index d644141..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110811.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110811.png deleted file mode 100644 index 3963d71..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110811.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110831.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110831.png deleted file mode 100644 index 3ae74be..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110831.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110911.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110911.png deleted file mode 100644 index 7542885..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110911.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110931.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110931.png deleted file mode 100644 index 2663909..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_110931.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111011.png deleted file mode 100644 index cb138b6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111031.png deleted file mode 100644 index 034cb41..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111111.png deleted file mode 100644 index 6f64c12..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111131.png deleted file mode 100644 index 016c9a9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111211.png deleted file mode 100644 index 2393939..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111231.png deleted file mode 100644 index 78c82ff..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111311.png deleted file mode 100644 index fbadec6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111331.png deleted file mode 100644 index 85ba8da..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111411.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111411.png deleted file mode 100644 index 1a7d2bf..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111411.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111431.png deleted file mode 100644 index 3d70924..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111511.png deleted file mode 100644 index eacf1cd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111531.png deleted file mode 100644 index 4fa8a8e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111611.png deleted file mode 100644 index bf6f726..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111631.png deleted file mode 100644 index bac862c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111711.png deleted file mode 100644 index 466c8b6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111731.png deleted file mode 100644 index e012cc9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111811.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111811.png deleted file mode 100644 index 46e8351..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111811.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111831.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111831.png deleted file mode 100644 index 570a3e2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111831.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111911.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111911.png deleted file mode 100644 index ac0e411..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111911.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111931.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111931.png deleted file mode 100644 index 4ecbc1b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_111931.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112011.png deleted file mode 100644 index f0825f0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112031.png deleted file mode 100644 index b4c0967..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112111.png deleted file mode 100644 index 763d4f5..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112131.png deleted file mode 100644 index 4509e23..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112211.png deleted file mode 100644 index 26ff666..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112231.png deleted file mode 100644 index a4a0731..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112311.png deleted file mode 100644 index abf1e5e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112331.png deleted file mode 100644 index 11a4157..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112411.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112411.png deleted file mode 100644 index f382bec..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112411.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112431.png deleted file mode 100644 index 6866c9f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112511.png deleted file mode 100644 index e96c0b4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112531.png deleted file mode 100644 index fad25a5..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112611.png deleted file mode 100644 index fe2c6be..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112631.png deleted file mode 100644 index 04a8010..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112731.png deleted file mode 100644 index 44a28d2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112831.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112831.png deleted file mode 100644 index a34372c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112831.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112931.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112931.png deleted file mode 100644 index 5e66537..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_112931.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113011.png deleted file mode 100644 index e831a69..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113031.png deleted file mode 100644 index 6576a97..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113111.png deleted file mode 100644 index edffea9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113131.png deleted file mode 100644 index 8a3295a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113211.png deleted file mode 100644 index 1c97d1a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113231.png deleted file mode 100644 index 6d3f239..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113311.png deleted file mode 100644 index bd8c163..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113331.png deleted file mode 100644 index 956943f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113411.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113411.png deleted file mode 100644 index a8d4634..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113411.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113431.png deleted file mode 100644 index a92805b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113511.png deleted file mode 100644 index 33d8f2d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113531.png deleted file mode 100644 index 99c249e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113611.png deleted file mode 100644 index 37cbaf6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113631.png deleted file mode 100644 index 75def3f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113711.png deleted file mode 100644 index 248be92..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113731.png deleted file mode 100644 index cda94e3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113811.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113811.png deleted file mode 100644 index c16a665..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113811.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113831.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113831.png deleted file mode 100644 index fb363b7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113831.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113911.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113911.png deleted file mode 100644 index 36531b0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113911.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113931.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113931.png deleted file mode 100644 index 4a43443..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_113931.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114011.png deleted file mode 100644 index 47284b9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114031.png deleted file mode 100644 index 1ac7db6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114111.png deleted file mode 100644 index 07e1cfc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114131.png deleted file mode 100644 index a35a8a6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114211.png deleted file mode 100644 index 2b28097..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114231.png deleted file mode 100644 index 9709f7f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114311.png deleted file mode 100644 index 756e629..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114331.png deleted file mode 100644 index 95fbc04..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114411.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114411.png deleted file mode 100644 index af3d801..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114411.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114431.png deleted file mode 100644 index 97fb232..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114511.png deleted file mode 100644 index 2638796..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114531.png deleted file mode 100644 index 1763ab5..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114611.png deleted file mode 100644 index 11e21c0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114631.png deleted file mode 100644 index 9ba4768..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114711.png deleted file mode 100644 index ea0d046..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114731.png deleted file mode 100644 index 2fdafe5..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_114731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115011.png deleted file mode 100644 index ea6d777..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115031.png deleted file mode 100644 index ea1d7d3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115511.png deleted file mode 100644 index 112a478..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115531.png deleted file mode 100644 index 86a9caf..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115611.png deleted file mode 100644 index f818a83..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115631.png deleted file mode 100644 index a9cb4dd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115711.png deleted file mode 100644 index 72fa1f2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115731.png deleted file mode 100644 index 91ecb73..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115811.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115811.png deleted file mode 100644 index 347fba1..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115811.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115831.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115831.png deleted file mode 100644 index a39219a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115831.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115911.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115911.png deleted file mode 100644 index a7c4a39..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115911.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115931.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115931.png deleted file mode 100644 index 5fb5b17..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_115931.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116011.png deleted file mode 100644 index b13c0a4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116031.png deleted file mode 100644 index baba62a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116211.png deleted file mode 100644 index d94761e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116231.png deleted file mode 100644 index f4d03dc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116311.png deleted file mode 100644 index 36d3e1b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116331.png deleted file mode 100644 index 6cde4f4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116411.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116411.png deleted file mode 100644 index de07d17..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116411.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116431.png deleted file mode 100644 index 3aff124..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116511.png deleted file mode 100644 index 100921d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116531.png deleted file mode 100644 index d52de97..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116611.png deleted file mode 100644 index 9f199d9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116631.png deleted file mode 100644 index 02caf59..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116711.png deleted file mode 100644 index e29d342..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116731.png deleted file mode 100644 index da55105..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116811.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116811.png deleted file mode 100644 index fb908d9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116811.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116831.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116831.png deleted file mode 100644 index 141ea6f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116831.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116911.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116911.png deleted file mode 100644 index b15127f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116911.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116931.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116931.png deleted file mode 100644 index b3c620b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_116931.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117011.png deleted file mode 100644 index adc18a7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117031.png deleted file mode 100644 index b87d02b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117111.png deleted file mode 100644 index 08c2f45..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117131.png deleted file mode 100644 index 7df4615..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117211.png deleted file mode 100644 index f85f0be..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117231.png deleted file mode 100644 index d0cc8c2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117311.png deleted file mode 100644 index 501aed9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117331.png deleted file mode 100644 index 6caf9f8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117411.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117411.png deleted file mode 100644 index 2cdb4d4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117411.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117431.png deleted file mode 100644 index b6fb3a2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117511.png deleted file mode 100644 index 23fb515..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117531.png deleted file mode 100644 index a1ac5b8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117611.png deleted file mode 100644 index 61fa171..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117631.png deleted file mode 100644 index f100cfe..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117711.png deleted file mode 100644 index 22ae5e0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117731.png deleted file mode 100644 index 6080b18..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117811.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117811.png deleted file mode 100644 index 604a876..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117811.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117831.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117831.png deleted file mode 100644 index 59f6901..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117831.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117911.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117911.png deleted file mode 100644 index d2f93da..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117911.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117931.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117931.png deleted file mode 100644 index 50a531d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_117931.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118011.png deleted file mode 100644 index 4f88f88..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118031.png deleted file mode 100644 index 98b5f31..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118111.png deleted file mode 100644 index 570b2d7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118131.png deleted file mode 100644 index a0c7e6d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118311.png deleted file mode 100644 index a45eb3b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118331.png deleted file mode 100644 index cb1b9d8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118411.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118411.png deleted file mode 100644 index 33b1aa7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118411.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118431.png deleted file mode 100644 index 645dbc9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118511.png deleted file mode 100644 index 93cb904..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118531.png deleted file mode 100644 index db3d47b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_118531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119011.png deleted file mode 100644 index b71b2a4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119031.png deleted file mode 100644 index f35ec78..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119111.png deleted file mode 100644 index ade3648..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119131.png deleted file mode 100644 index de22fd1..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119211.png deleted file mode 100644 index dbcda82..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119231.png deleted file mode 100644 index 39e351a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119311.png deleted file mode 100644 index 4f906be..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119331.png deleted file mode 100644 index 4c9f1ef..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119911.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119911.png deleted file mode 100644 index aaedcfc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119911.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119931.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119931.png deleted file mode 100644 index f81bb9b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_119931.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120411.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120411.png deleted file mode 100644 index dfdabe0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120411.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120431.png deleted file mode 100644 index f14294b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120511.png deleted file mode 100644 index 4d5648d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120531.png deleted file mode 100644 index d70b2f6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120611.png deleted file mode 100644 index 09e22ab..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120631.png deleted file mode 100644 index 28cbda9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120711.png deleted file mode 100644 index ab1411e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120731.png deleted file mode 100644 index 79a8865..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120811.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120811.png deleted file mode 100644 index 7958259..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120811.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120831.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120831.png deleted file mode 100644 index 7a053f4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120831.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120911.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120911.png deleted file mode 100644 index 6df6f36..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120911.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120931.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120931.png deleted file mode 100644 index 97167d4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_120931.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_121011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_121011.png deleted file mode 100644 index fd8bc2d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_121011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_121031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_121031.png deleted file mode 100644 index 6552f06..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_121031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_121111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_121111.png deleted file mode 100644 index f825560..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_121111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_121131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_121131.png deleted file mode 100644 index 6d71bec..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_121131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_121211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_121211.png deleted file mode 100644 index ed64089..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_121211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_121231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_121231.png deleted file mode 100644 index 43e6bc0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_121231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_170111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_170111.png deleted file mode 100644 index 93a848c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_170111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_170131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_170131.png deleted file mode 100644 index 48efaa2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_170131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_170211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_170211.png deleted file mode 100644 index d253047..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_170211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_170231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_170231.png deleted file mode 100644 index 09529ea..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_170231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180111.png deleted file mode 100644 index 036b257..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180131.png deleted file mode 100644 index 271003d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180211.png deleted file mode 100644 index 2c3e376..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180231.png deleted file mode 100644 index 05bba12..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180311.png deleted file mode 100644 index c861c99..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180331.png deleted file mode 100644 index 70b3c9a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180411.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180411.png deleted file mode 100644 index 8d0d6b6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180411.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180431.png deleted file mode 100644 index c5f69e3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180511.png deleted file mode 100644 index 4bd028b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180531.png deleted file mode 100644 index 5cf78b5..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180611.png deleted file mode 100644 index 24b92dd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180631.png deleted file mode 100644 index 19d16f6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180711.png deleted file mode 100644 index 7ca0a84..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180731.png deleted file mode 100644 index 9229d95..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180811.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180811.png deleted file mode 100644 index 74b585e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180811.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180831.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180831.png deleted file mode 100644 index 4eca19f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_180831.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_190011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_190011.png deleted file mode 100644 index 7d7e6f6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_190011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_190111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_190111.png deleted file mode 100644 index 0a48a44..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_190111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_190711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_190711.png deleted file mode 100644 index af358b2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_190711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_190811.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_190811.png deleted file mode 100644 index 1d7b12e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_190811.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_190911.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_190911.png deleted file mode 100644 index 75a9b1f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_190911.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191011.png deleted file mode 100644 index 7f216e5..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191111.png deleted file mode 100644 index 0a553d4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191311.png deleted file mode 100644 index c2631d2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191411.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191411.png deleted file mode 100644 index ff4df17..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191411.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191511.png deleted file mode 100644 index ce2eeeb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191611.png deleted file mode 100644 index 13eb98f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191711.png deleted file mode 100644 index 97f6e5c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191811.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191811.png deleted file mode 100644 index 31266e1..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191811.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191911.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191911.png deleted file mode 100644 index 6f23a62..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_191911.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_192011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_192011.png deleted file mode 100644 index d985610..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_192011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_390100.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_390100.png deleted file mode 100644 index ef9413a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_390100.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_700131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_700131.png deleted file mode 100644 index 846a036..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_700131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_700231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_700231.png deleted file mode 100644 index ebe2b08..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_700231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_700331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_700331.png deleted file mode 100644 index 1a48be2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_700331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_700431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_700431.png deleted file mode 100644 index 950bafc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_700431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_900011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_900011.png deleted file mode 100644 index 68ccddb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_900011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_900013.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_900013.png deleted file mode 100644 index 68ccddb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_900013.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_940131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_940131.png deleted file mode 100644 index f693de9..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/icon_unit_940131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/kokkoro_stamp.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/kokkoro_stamp.png deleted file mode 100644 index 7e63710..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/kokkoro_stamp.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/template.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/template.png deleted file mode 100644 index 7f4bc76..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit/template.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100111.png deleted file mode 100644 index 61ad75f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100131.png deleted file mode 100644 index 8540259..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100161.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100161.png deleted file mode 100644 index 16859ff..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100161.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100211.png deleted file mode 100644 index a86a864..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100231.png deleted file mode 100644 index 4227482..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100261.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100261.png deleted file mode 100644 index 580bd8d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100261.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100311.png deleted file mode 100644 index dccd9af..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100331.png deleted file mode 100644 index f44b91a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100361.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100361.png deleted file mode 100644 index 4a0994f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100361.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100411.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100411.png deleted file mode 100644 index 9cc5e78..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100411.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100431.png deleted file mode 100644 index c7f4582..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100511.png deleted file mode 100644 index a7b6014..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100531.png deleted file mode 100644 index ea85bb6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100611.png deleted file mode 100644 index fed4d2d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100631.png deleted file mode 100644 index c6a1616..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100711.png deleted file mode 100644 index b5bf425..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100731.png deleted file mode 100644 index 36513c1..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100811.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100811.png deleted file mode 100644 index 0e42129..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100811.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100831.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100831.png deleted file mode 100644 index db14a01..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100831.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100911.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100911.png deleted file mode 100644 index 7e529bf..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100911.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100931.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100931.png deleted file mode 100644 index 76a275a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_100931.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101011.png deleted file mode 100644 index 21da5a6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101031.png deleted file mode 100644 index c8e6736..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101061.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101061.png deleted file mode 100644 index aa8beb7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101061.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101111.png deleted file mode 100644 index 2481da4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101131.png deleted file mode 100644 index f01f404..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101161.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101161.png deleted file mode 100644 index f0f3d1c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101161.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101211.png deleted file mode 100644 index 3595c90..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101231.png deleted file mode 100644 index 53fd6aa..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101261.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101261.png deleted file mode 100644 index aaf34db..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101261.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101311.png deleted file mode 100644 index db29258..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101331.png deleted file mode 100644 index 2440f6c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101411.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101411.png deleted file mode 100644 index 919f418..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101411.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101431.png deleted file mode 100644 index 33cba82..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101511.png deleted file mode 100644 index 9af1dac..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101531.png deleted file mode 100644 index e4942fb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101611.png deleted file mode 100644 index 7ba87cf..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101631.png deleted file mode 100644 index 471942a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101711.png deleted file mode 100644 index 4d59d97..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101731.png deleted file mode 100644 index 8e96bb3..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101811.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101811.png deleted file mode 100644 index 9602baf..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101811.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101831.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101831.png deleted file mode 100644 index b77bf35..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101831.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101861.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101861.png deleted file mode 100644 index c57a1b0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_101861.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102011.png deleted file mode 100644 index 63f913e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102031.png deleted file mode 100644 index 47fccd1..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102111.png deleted file mode 100644 index 3db6257..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102131.png deleted file mode 100644 index 3018719..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102211.png deleted file mode 100644 index 8aab22f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102231.png deleted file mode 100644 index 8687007..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102311.png deleted file mode 100644 index 99314a6..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102331.png deleted file mode 100644 index 8858ea4..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102361.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102361.png deleted file mode 100644 index a4c3111..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102361.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102511.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102511.png deleted file mode 100644 index c7faf9c..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102511.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102531.png deleted file mode 100644 index caadba1..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102611.png deleted file mode 100644 index d7bfa70..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102631.png deleted file mode 100644 index 142b3cd..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102711.png deleted file mode 100644 index 9377e5a..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102731.png deleted file mode 100644 index b3656e8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102811.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102811.png deleted file mode 100644 index 312fa53..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102811.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102831.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102831.png deleted file mode 100644 index 506b5eb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102831.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102861.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102861.png deleted file mode 100644 index 46745cb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102861.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102911.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102911.png deleted file mode 100644 index 06b7a93..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102911.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102931.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102931.png deleted file mode 100644 index 00da2b5..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_102931.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103011.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103011.png deleted file mode 100644 index eb2ac63..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103011.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103031.png deleted file mode 100644 index 3162960..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103111.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103111.png deleted file mode 100644 index e471e95..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103111.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103131.png deleted file mode 100644 index 3326762..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103211.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103211.png deleted file mode 100644 index e4c7793..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103211.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103231.png deleted file mode 100644 index df2123d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103261.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103261.png deleted file mode 100644 index dac6f50..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103261.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103311.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103311.png deleted file mode 100644 index b8e5965..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103311.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103331.png deleted file mode 100644 index 64cab52..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103411.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103411.png deleted file mode 100644 index 18a6435..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103411.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103431.png deleted file mode 100644 index c0a234f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103461.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103461.png deleted file mode 100644 index 998aafa..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103461.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103611.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103611.png deleted file mode 100644 index dc2ea86..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103611.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103631.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103631.png deleted file mode 100644 index ebe2b08..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103631.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103711.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103711.png deleted file mode 100644 index 687b9da..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103711.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103731.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103731.png deleted file mode 100644 index 0185d7d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_103731.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_111031.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_111031.png deleted file mode 100644 index 96c1efa..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_111031.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_111131.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_111131.png deleted file mode 100644 index 1a48be2..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_111131.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_111331.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_111331.png deleted file mode 100644 index 5c1c1c8..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_111331.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_111431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_111431.png deleted file mode 100644 index 950bafc..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_111431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_180231.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_180231.png deleted file mode 100644 index bff34e7..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_180231.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_180431.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_180431.png deleted file mode 100644 index e07c5c0..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_180431.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_180531.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_180531.png deleted file mode 100644 index a507923..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/unit_shadow/icon_unit_180531.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/xcw_stamp.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/xcw_stamp.jpg deleted file mode 100644 index 32acd0d..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/xcw_stamp.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/我的天啊你看看都几度了.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/我的天啊你看看都几度了.jpg deleted file mode 100644 index 49df601..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/priconne/我的天啊你看看都几度了.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/yao.jpeg b/hexi/plugins/nonebot_plugin_group_tools/res/img/yao.jpeg deleted file mode 100644 index 3959b63..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/yao.jpeg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/yao.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/yao.png deleted file mode 100644 index 14f8785..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/yao.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/yao1.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/yao1.jpg deleted file mode 100644 index 14f8785..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/yao1.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/yao1.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/yao1.png deleted file mode 100644 index 3e86f09..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/yao1.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/yao2.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/yao2.jpg deleted file mode 100644 index e365c39..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/yao2.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/yao2.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/yao2.png deleted file mode 100644 index 938d89f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/yao2.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/yao3.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/yao3.jpg deleted file mode 100644 index 3959b63..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/yao3.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/yao3.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/yao3.png deleted file mode 100644 index 041276e..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/yao3.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/yao4.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/yao4.png deleted file mode 100644 index e365c39..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/yao4.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/yao5.png b/hexi/plugins/nonebot_plugin_group_tools/res/img/yao5.png deleted file mode 100644 index 5f69993..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/yao5.png and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/不要以为这样就赢了.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/不要以为这样就赢了.jpg deleted file mode 100644 index a936d2f..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/不要以为这样就赢了.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/台6月rank.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/台6月rank.jpg deleted file mode 100644 index c9feecb..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/台6月rank.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/我的天啊你看看都几度了.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/我的天啊你看看都几度了.jpg deleted file mode 100644 index 49df601..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/我的天啊你看看都几度了.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/我的天啊你看看都几点了.jpg b/hexi/plugins/nonebot_plugin_group_tools/res/img/我的天啊你看看都几点了.jpg deleted file mode 100644 index 72b7e8b..0000000 Binary files a/hexi/plugins/nonebot_plugin_group_tools/res/img/我的天啊你看看都几点了.jpg and /dev/null differ diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/__init__.py b/hexi/plugins/nonebot_plugin_helldivers_tools/__init__.py index bb10bc9..da1d56d 100644 --- a/hexi/plugins/nonebot_plugin_helldivers_tools/__init__.py +++ b/hexi/plugins/nonebot_plugin_helldivers_tools/__init__.py @@ -1,20 +1,22 @@ -import httpx -from nonebot import logger -from nonebot.internal.params import ArgPlainText -from nonebot.typing import T_State -from nonebot import on_command -from nonebot.adapters.onebot.v11 import MessageEvent, Bot, MessageSegment -from nonebot.plugin import PluginMetadata -from typing import Optional, Union +"""绝地潜兵小助手 —— 入口(元数据 + 依赖 + 配置/Web 注册)。""" -from .equipment import get_random_equipment, get_equipment_by_combination -from .hd2_api import get_briefing_data -from .war_renderer import render_war_briefing -from .utils import * -from .equipment_store import init_db as _init_equipment_db -from . import stratagem_admin as _stratagem_admin +import os + +import httpx # noqa: F401 +from nonebot import logger +from nonebot.adapters.onebot.v11 import MessageEvent # noqa: F401 +from nonebot.internal.params import ArgPlainText # noqa: F401 +from nonebot.typing import T_State # noqa: F401 +from nonebot import on_command # noqa: F401 +from nonebot.plugin import PluginMetadata + +from .services.equipment import get_random_equipment, get_equipment_by_combination # noqa: F401 +from .services.hd2_api import get_briefing_data # noqa: F401 +from .utils.war_renderer import render_war_briefing # noqa: F401 +from .utils import gen_ms_img, pic2b64 # noqa: F401 +from .services.equipment_store import init_db as _init_equipment_db +from .web import stratagem_admin as _stratagem_admin from hexi.web_plugin_registry import register_web_plugin -from nonebot.matcher import Matcher __plugin_meta__ = PluginMetadata( name="绝地潜兵小助手", @@ -24,12 +26,12 @@ __plugin_meta__ = PluginMetadata( "随机战备:让机器人帮你随机一套战备\n" "战备管理后台:/hub/ 统一管理台内可视化编辑", type="application", - homepage="https://github.com/sansenhoshi/nonebot_plugin_helldivers_tools" + homepage="https://github.com/sansenhoshi/nonebot_plugin_helldivers_tools", ) basic_path = os.path.dirname(__file__) save_path = os.path.join(basic_path, "temp") -img_path = os.path.join(basic_path, "img") +img_path = os.path.join(basic_path, "res", "img") data_path = os.path.join(basic_path, "data") @@ -74,131 +76,4 @@ register_model_config( }, ) - -async def _send_war_card(matcher: Matcher, ev: MessageEvent, top_per_race: Optional[int]) -> None: - await matcher.send("正在获取前线战况,请民主的等待!") - try: - data = await get_briefing_data() - png = await render_war_briefing(data, top_per_race) - except Exception as e: - logger.exception("获取战况失败") - await matcher.finish( - MessageSegment.reply(ev.message_id) - + f"战况获取失败:{type(e).__name__}:{e}" - ) - return - mes = (MessageSegment.reply(ev.message_id), gen_ms_img(png)) - await matcher.send(mes) - - -war_situation = on_command("简报", aliases={"简报"}) -war_detail = on_command("详报", aliases={"详报"}) - - -@war_situation.handle() -async def get_war_info(ev: MessageEvent): - await _send_war_card(war_situation, ev, top_per_race=4) - - -@war_detail.handle() -async def get_war_detail(ev: MessageEvent): - await _send_war_card(war_detail, ev, top_per_race=None) - - -async def download_url(url: str) -> bytes | None: - async with httpx.AsyncClient() as client: - for i in range(3): - try: - resp = await client.get(url) - if resp.status_code != 200: - continue - return resp.content - except Exception as e: - print(f"Error downloading {url}, retry {i}/3: {str(e)}") - return None - - -random_helldivers = on_command("随机战备", aliases={"随机战备"}, block=True) - -# PROMPT = """ ***超级地球武装部*** -# 请发送你需要的随机规则 -# -# 1:纯随机(不推荐) -# -# 套路随机(按一定规则随机) -# -# 2:2红/1蓝/1绿 -# 3:2绿/1红/1蓝 -# 4:2蓝/1绿/1红 -# -# 5:3红/1蓝 -# 6:3绿/1蓝 -# -# 7:2红/2蓝 -# 8:2蓝/2绿 -# 9:2绿/2红 -# -# 10:4红 -# 11:4绿""" - -board_path = f"{img_path}/board2.png" - -PROMPT = MessageSegment.image(pic2b64(Image.open(board_path))) - -error_count = 0 - - -# 用户选择 -@random_helldivers.got("pick_type", prompt=PROMPT) -async def got_random_helldivers(event: MessageEvent, pick_type: str = ArgPlainText()): - global error_count - if error_count >= 2: - await random_helldivers.finish("已回归平民生活——") - logger.info("持续输错退出随机战备") - error_count = 0 - return - logger.info(f"用户选择的战备类型: {pick_type}") - if not is_number(pick_type): - error_count += 1 - await random_helldivers.reject(f"您输入的 {pick_type} 非数字,请重新输入1到11,或者输入0退出") - elif int(pick_type) not in range(12): - error_count += 1 - await random_helldivers.reject(f"您输入的 {pick_type} 不在范围内,请重新输入1到11,或者输入0退出") - elif int(pick_type) == 0: - await random_helldivers.finish("已回归平民生活——") - logger.info("用户选择退出随机战备") - error_count = 0 - return - - mix_msg = (MessageSegment.reply(event.message_id),) - - type_combinations = { - 2: {'red': 2, 'blue': 1, 'green': 1}, - 3: {'green': 2, 'red': 1, 'blue': 1}, - 4: {'blue': 2, 'green': 1, 'red': 1}, - 5: {'red': 3, 'blue': 1}, - 6: {'green': 3, 'blue': 1}, - 7: {'red': 2, 'blue': 2}, - 8: {'blue': 2, 'green': 2}, - 9: {'green': 2, 'red': 2}, - 10: {'red': 4}, - 11: {'green': 4} - } - - if int(pick_type) == 1: - logger.info("用户选择纯随机战备") - result = await get_random_equipment(4) # 4 random equipments - else: - combination = type_combinations.get(int(pick_type)) - logger.info(f"用户选择的战备组合: {combination}") - result = await get_equipment_by_combination(combination) - - final_msg = MessageSegment.text("您的随机结果是:\n") - image_tuple = gen_ms_img(result) - mix_msg += (final_msg, image_tuple) - - await random_helldivers.finish(mix_msg) - - -def is_number(s): - return bool(re.match(r'^[0-9]+$', s)) \ No newline at end of file +from . import handlers as _handlers # noqa: E402,F401 diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/brief_preview.html b/hexi/plugins/nonebot_plugin_helldivers_tools/brief_preview.html deleted file mode 100644 index 665a970..0000000 --- a/hexi/plugins/nonebot_plugin_helldivers_tools/brief_preview.html +++ /dev/null @@ -1,487 +0,0 @@ - - - - - - - - -
- -
- -
超级地球战况简报
-
Galactic War Briefing · 2026-08-28 19:01
-
- -
- -
-
- 重要指令 - 剩余:73小时1分 -
-
解放指定的敌方星球,这些星球极有可能藏匿着破坏TCS+的异见分子。
-
指令目标
十字架一—
轧尔哈伦
90%
富源—
-
奖励:50奖章
-
- - -
-
星系战况
-
56.9K
参战潜兵
91%
任务完成率
35
当前战役数
216.6B
终结族总击杀
115.0B
机器人总击杀
75.8B
光能族总击杀
8.7B
潜兵总阵亡
1.0B
任务完成总数
-
- -
- -
-
进行中的战役
- -
-
终结族 · 10玩家 4.9万
-
-
-
-
- - 解放战 - -
-
- -
-
-
轧尔哈伦
-
终结族 · 解放
-
-
-
90%
-
解放进度
-
-
-
民主空间站
行动支持 · 外骨骼装甲储备
轨道封锁
-
- -
所属星系锦栖分区
部署潜兵3.5万
地形特征幽祟沼泽
环境事件无
- -
-
-
-
-
- - 保卫战 - -
-
- -
-
-
水委一次星
-
超级地球 · 防守
-
-
-
72%
-
入侵进度
-
-
- -
-
剩余时间:1小时3分
-
所属星系博格斯分区
部署潜兵5,416
地形特征平原
环境事件无
-
星球效果 工厂枢纽 终结族遏制体系+ 掠食变种 超级地球武装部队驻守
-
-
-
-
-
- - 解放战 - -
-
- -
-
-
丈人一湾
-
终结族 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系锦栖分区
部署潜兵3,126
地形特征沙漠沙丘
环境事件沙暴
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
盖尔崔亚
-
终结族 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系锦栖分区
部署潜兵2,414
地形特征离子绯红之地
环境事件离子风暴
- -
-
-
-
-
机器人 · 9玩家 4,537
-
-
-
-
- - 解放战 - -
-
- -
-
-
玛塔
-
机器人 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系仙女座分区
部署潜兵1,420
地形特征平原
环境事件无
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
极光湾
-
机器人 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系瓦尔迪斯分区
部署潜兵661
地形特征苔原
环境事件无
-
星球效果 喷气旅孵化厂
-
-
-
-
-
- - 解放战 - -
-
- -
-
-
玛尔特
-
机器人 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系仙女座分区
部署潜兵603
地形特征苔原
环境事件无
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
丘伊
-
机器人 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系拉凯欧分区
部署潜兵564
地形特征沙漠沙丘
环境事件沙暴
- -
-
-
-
-
光能族 · 16玩家 1,905
-
-
-
-
- - 解放战 - -
-
- -
-
-
可利亚
-
光能族 · 解放
-
-
-
9%
-
解放进度
-
-
- -
- -
所属星系欧米茄分区
部署潜兵564
地形特征焦土荒原
环境事件烈焰龙卷
-
星球效果 窃票者
-
-
-
-
-
- - 解放战 - -
-
- -
-
-
右执法
-
光能族 · 解放
-
-
-
3%
-
解放进度
-
-
- -
- -
所属星系阿基拉分区
部署潜兵254
地形特征死寂之地
环境事件无
-
星球效果 窃票者
-
-
-
-
-
- - 解放战 - -
-
- -
-
-
格拉夫米尔
-
光能族 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系瑞克图斯分区
部署潜兵207
地形特征骸骨之地
环境事件无
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
新戈23
-
光能族 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系欧米茄分区
部署潜兵174
地形特征岩质峡谷
环境事件地震
-
星球效果 入侵舰队 占领者
-
-
-
-
- - -
-
星系控制
-
超级地球 209 终结族 25 机器人 14 光能族 25
-
- -
数据来源:helldivers-2/api 社区接口 · 仅供娱乐
-
- - diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/brief_preview_dss_sim.html b/hexi/plugins/nonebot_plugin_helldivers_tools/brief_preview_dss_sim.html deleted file mode 100644 index b57fcf9..0000000 --- a/hexi/plugins/nonebot_plugin_helldivers_tools/brief_preview_dss_sim.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - -
-
-
进行中的战役
- -
-
终结族 · 1玩家 3.3万
-
-
-
-
- - 解放战 - -
-
- -
-
-
轧尔哈伦
-
终结族 · 解放
-
-
-
87%
-
解放进度
-
-
-
民主空间站
行动支持 · 外骨骼装甲储备
飞鹰风暴轰炸解放推进
-
- -
所属星系锦栖分区
部署潜兵3.3万
地形特征幽祟沼泽
环境事件无
- -
-
-
-
-
\ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/brief_preview_full.html b/hexi/plugins/nonebot_plugin_helldivers_tools/brief_preview_full.html deleted file mode 100644 index 5f4550f..0000000 --- a/hexi/plugins/nonebot_plugin_helldivers_tools/brief_preview_full.html +++ /dev/null @@ -1,1085 +0,0 @@ - - - - - - - - -
- -
- -
超级地球战况简报
-
Galactic War Briefing · 2026-08-28 19:01
-
- -
- -
-
- 重要指令 - 剩余:73小时1分 -
-
解放指定的敌方星球,这些星球极有可能藏匿着破坏TCS+的异见分子。
-
指令目标
十字架一—
轧尔哈伦
90%
富源—
-
奖励:50奖章
-
- - -
-
星系战况
-
56.9K
参战潜兵
91%
任务完成率
35
当前战役数
216.6B
终结族总击杀
115.0B
机器人总击杀
75.8B
光能族总击杀
8.7B
潜兵总阵亡
1.0B
任务完成总数
-
- -
- -
-
进行中的战役
- -
-
终结族 · 10玩家 4.9万
-
-
-
-
- - 解放战 - -
-
- -
-
-
轧尔哈伦
-
终结族 · 解放
-
-
-
90%
-
解放进度
-
-
-
民主空间站
行动支持 · 外骨骼装甲储备
轨道封锁
-
- -
所属星系锦栖分区
部署潜兵3.5万
地形特征幽祟沼泽
环境事件无
- -
-
-
-
-
- - 保卫战 - -
-
- -
-
-
水委一次星
-
超级地球 · 防守
-
-
-
72%
-
入侵进度
-
-
- -
-
剩余时间:1小时3分
-
所属星系博格斯分区
部署潜兵5,416
地形特征平原
环境事件无
-
星球效果 工厂枢纽 终结族遏制体系+ 掠食变种 超级地球武装部队驻守
-
-
-
-
-
- - 解放战 - -
-
- -
-
-
丈人一湾
-
终结族 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系锦栖分区
部署潜兵3,126
地形特征沙漠沙丘
环境事件沙暴
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
盖尔崔亚
-
终结族 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系锦栖分区
部署潜兵2,414
地形特征离子绯红之地
环境事件离子风暴
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
璨光
-
终结族 · 解放
-
-
-
13%
-
解放进度
-
-
- -
- -
所属星系猎户座分区
部署潜兵1,751
地形特征落叶林
环境事件无
-
星球效果 终结族遏制体系+ 孢裂变种 超级地球武装部队驻守
-
-
-
-
-
- - 解放战 - -
-
- -
-
-
奥密克戎
-
终结族 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系莱斯特拉德分区
部署潜兵642
地形特征虫窝世界
环境事件无
-
星球效果 重度阴霾笼罩 虫窝世界 霸王虫 蟑龙
-
-
-
-
-
- - 解放战 - -
-
- -
-
-
帕狄恩XXIV
-
终结族 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系锦栖分区
部署潜兵261
地形特征死寂之地
环境事件无
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
博尔岩
-
终结族 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系法尔斯塔夫分区
部署潜兵163
地形特征沼泽
环境事件无
-
星球效果 阴霾
-
-
-
-
-
- - 解放战 - -
-
- -
-
-
尼维尔43
-
终结族 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系米琳分区
部署潜兵145
地形特征死寂之地
环境事件无
-
星球效果 阴霾
-
-
-
-
-
- - 解放战 - -
-
- -
-
-
帕尔晨
-
终结族 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系斯坦分区
部署潜兵132
地形特征焦土荒原
环境事件烈焰龙卷
- -
-
-
-
-
机器人 · 9玩家 4,537
-
-
-
-
- - 解放战 - -
-
- -
-
-
玛塔
-
机器人 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系仙女座分区
部署潜兵1,420
地形特征平原
环境事件无
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
极光湾
-
机器人 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系瓦尔迪斯分区
部署潜兵661
地形特征苔原
环境事件无
-
星球效果 喷气旅孵化厂
-
-
-
-
-
- - 解放战 - -
-
- -
-
-
玛尔特
-
机器人 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系仙女座分区
部署潜兵603
地形特征苔原
环境事件无
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
丘伊
-
机器人 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系拉凯欧分区
部署潜兵564
地形特征沙漠沙丘
环境事件沙暴
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
敏托瑞亚
-
机器人 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系盖勒特分区
部署潜兵455
地形特征平原
环境事件无
-
星球效果 超镁铁矿井 生化人
-
-
-
-
-
- - 解放战 - -
-
- -
-
-
卡戎主星
-
机器人 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系仙女座分区
部署潜兵329
地形特征离子绯红之地
环境事件离子风暴
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
玄戈增二IV
-
机器人 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系瓦尔迪斯分区
部署潜兵277
地形特征幽祟沼泽
环境事件无
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
查巴尔VII
-
机器人 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系仙女座分区
部署潜兵160
地形特征酸性恶地
环境事件酸雨风暴
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
布里斯提卡
-
机器人 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系盖勒特分区
部署潜兵68
地形特征焦土荒原
环境事件烈焰龙卷
- -
-
-
-
-
光能族 · 16玩家 1,905
-
-
-
-
- - 解放战 - -
-
- -
-
-
可利亚
-
光能族 · 解放
-
-
-
9%
-
解放进度
-
-
- -
- -
所属星系欧米茄分区
部署潜兵564
地形特征焦土荒原
环境事件烈焰龙卷
-
星球效果 窃票者
-
-
-
-
-
- - 解放战 - -
-
- -
-
-
右执法
-
光能族 · 解放
-
-
-
3%
-
解放进度
-
-
- -
- -
所属星系阿基拉分区
部署潜兵254
地形特征死寂之地
环境事件无
-
星球效果 窃票者
-
-
-
-
-
- - 解放战 - -
-
- -
-
-
格拉夫米尔
-
光能族 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系瑞克图斯分区
部署潜兵207
地形特征骸骨之地
环境事件无
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
新戈23
-
光能族 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系欧米茄分区
部署潜兵174
地形特征岩质峡谷
环境事件地震
-
星球效果 入侵舰队 占领者
-
-
-
-
-
- - 解放战 - -
-
- -
-
-
席姆纳特
-
光能族 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系金牛座分区
部署潜兵173
地形特征离子丛林
环境事件离子风暴
-
星球效果 无脑群氓
-
-
-
-
-
- - 解放战 - -
-
- -
-
-
创世主星
-
光能族 · 解放
-
-
-
1%
-
解放进度
-
-
- -
- -
所属星系瑞克图斯分区
部署潜兵95
地形特征离子丛林
环境事件离子风暴
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
RD4
-
光能族 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系参宿七分区
部署潜兵77
地形特征月球
环境事件流星风暴
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
瓦尔莫克斯
-
光能族 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系瑞克图斯分区
部署潜兵70
地形特征离子绯红之地
环境事件离子风暴
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
新斯德哥尔摩
-
光能族 · 解放
-
-
-
2%
-
解放进度
-
-
- -
- -
所属星系半藏分区
部署潜兵60
地形特征冰封冰川
环境事件暴风雪
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
阿斯佩洛斯主星
-
光能族 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系阿基拉分区
部署潜兵53
地形特征沼泽
环境事件无
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
海索主星
-
光能族 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系参宿七分区
部署潜兵44
地形特征冰封冰川
环境事件暴风雪
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
角宿二湾
-
光能族 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系半藏分区
部署潜兵35
地形特征沙漠沙丘
环境事件沙暴
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
罗格5
-
光能族 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系参宿七分区
部署潜兵30
地形特征火山丛林
环境事件火山活动
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
海德斯
-
光能族 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系费里斯分区
部署潜兵28
地形特征沼泽
环境事件无
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
赫尔松次星
-
光能族 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系费里斯分区
部署潜兵23
地形特征焦土荒原
环境事件烈焰龙卷
- -
-
-
-
-
- - 解放战 - -
-
- -
-
-
泽亚鲁戈西亚
-
光能族 · 解放
-
-
-
0%
-
解放进度
-
-
- -
- -
所属星系费里斯分区
部署潜兵18
地形特征沙漠悬壁
环境事件地震
- -
-
-
-
- - -
-
星系控制
-
超级地球 209 终结族 25 机器人 14 光能族 25
-
- -
数据来源:helldivers-2/api 社区接口 · 仅供娱乐
-
- - diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/brief_preview_single.html b/hexi/plugins/nonebot_plugin_helldivers_tools/brief_preview_single.html deleted file mode 100644 index f38f67e..0000000 --- a/hexi/plugins/nonebot_plugin_helldivers_tools/brief_preview_single.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - -
-
- -
-
进行中的战役
- -
-
终结族 · 1玩家 5,399
-
-
-
-
- - 保卫战 - -
-
- -
-
-
水委一次星
-
超级地球 · 防守
-
-
-
100%
-
防御进度
-
-
- -
-
剩余时间:3小时42分
-
所属星系博格斯分区
部署潜兵5,399
地形特征平原
环境事件无
- -
-
- 主要战役:保卫战 - 3小时42分 -
-
- 终结族正在进攻,超级地球军民正在保卫该星球 - 73% -
-
-
-
星球效果 工厂枢纽 终结族遏制体系+ 掠食变种 超级地球武装部队驻守
-
-
-
-
- -
-
- - \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/data/archive/equipment.json b/hexi/plugins/nonebot_plugin_helldivers_tools/data/archive/equipment.json index 4d0d989..e1a88ff 100644 --- a/hexi/plugins/nonebot_plugin_helldivers_tools/data/archive/equipment.json +++ b/hexi/plugins/nonebot_plugin_helldivers_tools/data/archive/equipment.json @@ -1,7 +1,7 @@ [ { "name": "AC-8 机炮", - "path": "img/helldivers/AC-8 机炮.png", + "path": "res/img/helldivers/AC-8 机炮.png", "type": "blue", "alias": [ "机炮" @@ -10,7 +10,7 @@ }, { "name": "APW-1 反器材步枪", - "path": "img/helldivers/APW-1 反器材步枪.png", + "path": "res/img/helldivers/APW-1 反器材步枪.png", "type": "blue", "alias": [ "反器材" @@ -19,7 +19,7 @@ }, { "name": "ARC-3 电弧发射器", - "path": "img/helldivers/ARC-3 电弧发射器.png", + "path": "res/img/helldivers/ARC-3 电弧发射器.png", "type": "blue", "alias": [ "电弧发射器" @@ -28,7 +28,7 @@ }, { "name": "AX-LAS-5 漫游车", - "path": "img/helldivers/AX-LAS-5 漫游车.png", + "path": "res/img/helldivers/AX-LAS-5 漫游车.png", "type": "blue", "alias": [ "激光狗" @@ -37,7 +37,7 @@ }, { "name": "AX·AR-23 护卫犬", - "path": "img/helldivers/AX·AR-23 护卫犬.png", + "path": "res/img/helldivers/AX·AR-23 护卫犬.png", "type": "blue", "alias": [ "实弹狗", @@ -47,7 +47,7 @@ }, { "name": "AX·ARC-3 K-9", - "path": "img/helldivers/AX·ARC-3 K-9.png", + "path": "res/img/helldivers/AX·ARC-3 K-9.png", "type": "blue", "alias": [ "电狗" @@ -56,7 +56,7 @@ }, { "name": "AX·FLAM-75 热狗", - "path": "img/helldivers/AX·FLAM-75 热狗.png", + "path": "res/img/helldivers/AX·FLAM-75 热狗.png", "type": "blue", "alias": [ "火狗" @@ -65,7 +65,7 @@ }, { "name": "AX·TX-13 腐息", - "path": "img/helldivers/AX·TX-13 腐息.png", + "path": "res/img/helldivers/AX·TX-13 腐息.png", "type": "blue", "alias": [ "毒狗" @@ -74,7 +74,7 @@ }, { "name": "A·AC-8 自动哨戒炮", - "path": "img/helldivers/A·AC-8 自动哨戒炮.png", + "path": "res/img/helldivers/A·AC-8 自动哨戒炮.png", "type": "green", "alias": [ "机炮炮台" @@ -83,7 +83,7 @@ }, { "name": "A·ARC-3 特斯拉塔", - "path": "img/helldivers/A·ARC-3 特斯拉塔.png", + "path": "res/img/helldivers/A·ARC-3 特斯拉塔.png", "type": "green", "alias": [ "电塔" @@ -92,7 +92,7 @@ }, { "name": "A·FLAM-40 火焰喷射哨戒炮", - "path": "img/helldivers/A·FLAM-40 火焰喷射哨戒炮.png", + "path": "res/img/helldivers/A·FLAM-40 火焰喷射哨戒炮.png", "type": "green", "alias": [ "喷火炮台" @@ -101,7 +101,7 @@ }, { "name": "A·G-16 加特林哨戒炮", - "path": "img/helldivers/A·G-16 加特林哨戒炮.png", + "path": "res/img/helldivers/A·G-16 加特林哨戒炮.png", "type": "green", "alias": [ "加特林炮台" @@ -110,7 +110,7 @@ }, { "name": "A·GM-17 瓦斯迫击哨戒炮", - "path": "img/helldivers/A·GM-17 瓦斯迫击哨戒炮.png", + "path": "res/img/helldivers/A·GM-17 瓦斯迫击哨戒炮.png", "type": "green", "alias": [ "毒迫" @@ -119,7 +119,7 @@ }, { "name": "A·LAS-98 激光哨戒炮", - "path": "img/helldivers/A·LAS-98 激光哨戒炮.png", + "path": "res/img/helldivers/A·LAS-98 激光哨戒炮.png", "type": "green", "alias": [ "激光炮台" @@ -128,7 +128,7 @@ }, { "name": "A·M-12 迫击哨戒炮", - "path": "img/helldivers/A·M-12 迫击哨戒炮.png", + "path": "res/img/helldivers/A·M-12 迫击哨戒炮.png", "type": "green", "alias": [ "炮击炮" @@ -137,7 +137,7 @@ }, { "name": "A·M-23 电磁冲击波迫击哨戒炮", - "path": "img/helldivers/A·M-23 电磁冲击波迫击哨戒炮.png", + "path": "res/img/helldivers/A·M-23 电磁冲击波迫击哨戒炮.png", "type": "green", "alias": [ "电磁迫击炮" @@ -146,7 +146,7 @@ }, { "name": "A·MG-43 哨戒机枪", - "path": "img/helldivers/A·MG-43 哨戒机枪.png", + "path": "res/img/helldivers/A·MG-43 哨戒机枪.png", "type": "green", "alias": [ "小机枪炮塔" @@ -155,7 +155,7 @@ }, { "name": "A·MLS-X 火箭哨戒炮", - "path": "img/helldivers/A·MLS-X 火箭哨戒炮.png", + "path": "res/img/helldivers/A·MLS-X 火箭哨戒炮.png", "type": "green", "alias": [ "" @@ -164,7 +164,7 @@ }, { "name": "B-1 补给背包", - "path": "img/helldivers/B-1 补给背包.png", + "path": "res/img/helldivers/B-1 补给背包.png", "type": "blue", "alias": [ "补包" @@ -173,7 +173,7 @@ }, { "name": "B-100 便携式地狱火炸弹", - "path": "img/helldivers/B-100 便携式地狱火炸弹.png", + "path": "res/img/helldivers/B-100 便携式地狱火炸弹.png", "type": "blue", "alias": [ "地狱火背包" @@ -182,7 +182,7 @@ }, { "name": "B·FLAM-80 焚燃者", - "path": "img/helldivers/B·FLAM-80 焚燃者.png", + "path": "res/img/helldivers/B·FLAM-80 焚燃者.png", "type": "blue", "alias": [ "背包喷火" @@ -191,7 +191,7 @@ }, { "name": "B·MD C4背包", - "path": "img/helldivers/B·MD C4背包.png", + "path": "res/img/helldivers/B·MD C4背包.png", "type": "blue", "alias": [ "C4背包" @@ -200,7 +200,7 @@ }, { "name": "CQC-1 唯一真旗", - "path": "img/helldivers/CQC-1 唯一真旗.png", + "path": "res/img/helldivers/CQC-1 唯一真旗.png", "type": "blue", "alias": [ "唯一真旗" @@ -209,7 +209,7 @@ }, { "name": "CQC-20 破门锤", - "path": "img/helldivers/CQC-20 破门锤.png", + "path": "res/img/helldivers/CQC-20 破门锤.png", "type": "blue", "alias": [ "锤子" @@ -218,7 +218,7 @@ }, { "name": "CQC-9 除叶工具", - "path": "img/helldivers/CQC-9 除叶工具.png", + "path": "res/img/helldivers/CQC-9 除叶工具.png", "type": "blue", "alias": [ "电锯" @@ -227,7 +227,7 @@ }, { "name": "EAT-17 消耗性反坦克武器", - "path": "img/helldivers/EAT-17 消耗性反坦克武器.png", + "path": "res/img/helldivers/EAT-17 消耗性反坦克武器.png", "type": "blue", "alias": [ "次抛" @@ -236,7 +236,7 @@ }, { "name": "EAT-411 荡平者", - "path": "img/helldivers/EAT-411 荡平者.png", + "path": "res/img/helldivers/EAT-411 荡平者.png", "type": "blue", "alias": [ "大通碟" @@ -245,7 +245,7 @@ }, { "name": "EAT-700 消耗性凝固汽油弹", - "path": "img/helldivers/EAT-700 消耗性凝固汽油弹.png", + "path": "res/img/helldivers/EAT-700 消耗性凝固汽油弹.png", "type": "blue", "alias": [ "火次抛" @@ -254,7 +254,7 @@ }, { "name": "EXO-45 爱国者外骨骼机甲", - "path": "img/helldivers/EXO-45 爱国者外骨骼机甲.png", + "path": "res/img/helldivers/EXO-45 爱国者外骨骼机甲.png", "type": "blue", "alias": [ "机枪机甲" @@ -263,7 +263,7 @@ }, { "name": "EXO-49 解放者外骨骼机甲", - "path": "img/helldivers/EXO-49 解放者外骨骼机甲.png", + "path": "res/img/helldivers/EXO-49 解放者外骨骼机甲.png", "type": "blue", "alias": [ "机炮机甲" @@ -272,7 +272,7 @@ }, { "name": "EXO-51 伐木者", - "path": "img/helldivers/EXO-51 伐木者.png", + "path": "res/img/helldivers/EXO-51 伐木者.png", "type": "blue", "alias": [ "喷火机甲" @@ -281,7 +281,7 @@ }, { "name": "EXO-55 突破", - "path": "img/helldivers/EXO-55 突破.png", + "path": "res/img/helldivers/EXO-55 突破.png", "type": "blue", "alias": [ "大盾机甲", @@ -291,7 +291,7 @@ }, { "name": "E·AT-12 反坦克炮台", - "path": "img/helldivers/E·AT-12 反坦克炮台.png", + "path": "res/img/helldivers/E·AT-12 反坦克炮台.png", "type": "green", "alias": [ "轮椅炮" @@ -300,7 +300,7 @@ }, { "name": "E·GL-21 掷弹兵防卫墙", - "path": "img/helldivers/E·GL-21 掷弹兵防卫墙.png", + "path": "res/img/helldivers/E·GL-21 掷弹兵防卫墙.png", "type": "green", "alias": [ "榴弹墙" @@ -309,7 +309,7 @@ }, { "name": "E·MG-101 重机枪部署支架", - "path": "img/helldivers/E·MG-101 重机枪部署支架.png", + "path": "res/img/helldivers/E·MG-101 重机枪部署支架.png", "type": "green", "alias": [ "重机枪支架" @@ -318,7 +318,7 @@ }, { "name": "FAF-14 飞矛", - "path": "img/helldivers/FAF-14 飞矛.png", + "path": "res/img/helldivers/FAF-14 飞矛.png", "type": "blue", "alias": [ "飞矛" @@ -327,7 +327,7 @@ }, { "name": "FLAM-40 火焰喷射器", - "path": "img/helldivers/FLAM-40 火焰喷射器.png", + "path": "res/img/helldivers/FLAM-40 火焰喷射器.png", "type": "blue", "alias": [ "火焰喷射器" @@ -336,7 +336,7 @@ }, { "name": "FX-12 防护罩生成中继器", - "path": "img/helldivers/FX-12 防护罩生成中继器.png", + "path": "res/img/helldivers/FX-12 防护罩生成中继器.png", "type": "green", "alias": [ "大蛋盾" @@ -345,7 +345,7 @@ }, { "name": "GL-21 榴弹发射器", - "path": "img/helldivers/GL-21 榴弹发射器.png", + "path": "res/img/helldivers/GL-21 榴弹发射器.png", "type": "blue", "alias": [ "榴弹发射器" @@ -354,7 +354,7 @@ }, { "name": "GL-28 弹链式榴弹发射器", - "path": "img/helldivers/GL-28 弹链式榴弹发射器.png", + "path": "res/img/helldivers/GL-28 弹链式榴弹发射器.png", "type": "blue", "alias": [ "弹链榴弹" @@ -363,7 +363,7 @@ }, { "name": "GL-52 缓和使者", - "path": "img/helldivers/GL-52 缓和使者.png", + "path": "res/img/helldivers/GL-52 缓和使者.png", "type": "blue", "alias": [ "电榴弹" @@ -372,7 +372,7 @@ }, { "name": "GR-8 无后坐力炮", - "path": "img/helldivers/GR-8 无后坐力炮.png", + "path": "res/img/helldivers/GR-8 无后坐力炮.png", "type": "blue", "alias": [ "无后坐" @@ -381,7 +381,7 @@ }, { "name": "LAS-98 激光大炮", - "path": "img/helldivers/LAS-98 激光大炮.png", + "path": "res/img/helldivers/LAS-98 激光大炮.png", "type": "blue", "alias": [ "激光大炮" @@ -390,7 +390,7 @@ }, { "name": "LAS-99 类星体加农炮", - "path": "img/helldivers/LAS-99 类星体加农炮.png", + "path": "res/img/helldivers/LAS-99 类星体加农炮.png", "type": "blue", "alias": [ "类星体" @@ -399,7 +399,7 @@ }, { "name": "LIFT-182 传送背包", - "path": "img/helldivers/LIFT-182 传送背包.png", + "path": "res/img/helldivers/LIFT-182 传送背包.png", "type": "blue", "alias": [ "传包" @@ -408,7 +408,7 @@ }, { "name": "LIFT-850 喷射背包", - "path": "img/helldivers/LIFT-850 喷射背包.png", + "path": "res/img/helldivers/LIFT-850 喷射背包.png", "type": "blue", "alias": [ "跳包" @@ -417,7 +417,7 @@ }, { "name": "LIFT-860 悬浮背包", - "path": "img/helldivers/LIFT-860 悬浮背包.png", + "path": "res/img/helldivers/LIFT-860 悬浮背包.png", "type": "blue", "alias": [ "悬浮背包" @@ -426,7 +426,7 @@ }, { "name": "M-1000 重装机枪", - "path": "img/helldivers/M-1000 重装机枪.png", + "path": "res/img/helldivers/M-1000 重装机枪.png", "type": "blue", "alias": [ "弹链机枪" @@ -435,7 +435,7 @@ }, { "name": "M-102 快速侦察载具", - "path": "img/helldivers/M-102 快速侦察载具.png", + "path": "res/img/helldivers/M-102 快速侦察载具.png", "type": "blue", "alias": [ "FRV", @@ -445,7 +445,7 @@ }, { "name": "M-105 盟友", - "path": "img/helldivers/M-105 盟友.png", + "path": "res/img/helldivers/M-105 盟友.png", "type": "blue", "alias": [ "盟友" @@ -454,7 +454,7 @@ }, { "name": "MD-17 反坦克地雷", - "path": "img/helldivers/MD-17 反坦克地雷.png", + "path": "res/img/helldivers/MD-17 反坦克地雷.png", "type": "green", "alias": [ "反坦克地雷" @@ -463,7 +463,7 @@ }, { "name": "MD-6 反步兵雷区", - "path": "img/helldivers/MD-6 反步兵雷区.png", + "path": "res/img/helldivers/MD-6 反步兵雷区.png", "type": "green", "alias": [ "反步兵雷区" @@ -472,7 +472,7 @@ }, { "name": "MD-8 毒气地雷", - "path": "img/helldivers/MD-8 毒气地雷.png", + "path": "res/img/helldivers/MD-8 毒气地雷.png", "type": "green", "alias": [ "毒气地雷", @@ -482,7 +482,7 @@ }, { "name": "MD-I4 燃烧地雷", - "path": "img/helldivers/MD-I4 燃烧地雷.png", + "path": "res/img/helldivers/MD-I4 燃烧地雷.png", "type": "green", "alias": [ "火地雷" @@ -491,7 +491,7 @@ }, { "name": "MG-206 重机枪", - "path": "img/helldivers/MG-206 重机枪.png", + "path": "res/img/helldivers/MG-206 重机枪.png", "type": "blue", "alias": [ "重机枪" @@ -500,7 +500,7 @@ }, { "name": "MG-43 机枪", - "path": "img/helldivers/MG-43 机枪.png", + "path": "res/img/helldivers/MG-43 机枪.png", "type": "blue", "alias": [ "中机枪" @@ -509,7 +509,7 @@ }, { "name": "MGX-42 子弹风暴", - "path": "img/helldivers/MGX-42 子弹风暴.png", + "path": "res/img/helldivers/MGX-42 子弹风暴.png", "type": "blue", "alias": [ "子弹风暴" @@ -518,7 +518,7 @@ }, { "name": "MLS-4X 突击兵", - "path": "img/helldivers/MLS-4X 突击兵.png", + "path": "res/img/helldivers/MLS-4X 突击兵.png", "type": "blue", "alias": [ "突击兵" @@ -527,7 +527,7 @@ }, { "name": "MS-11 单兵导弹发射井", - "path": "img/helldivers/MS-11 单兵导弹发射井.png", + "path": "res/img/helldivers/MS-11 单兵导弹发射井.png", "type": "blue", "alias": [ "发射井" @@ -536,7 +536,7 @@ }, { "name": "PLAS-45 纪元", - "path": "img/helldivers/PLAS-45 纪元.png", + "path": "res/img/helldivers/PLAS-45 纪元.png", "type": "blue", "alias": [ "纪元" @@ -545,7 +545,7 @@ }, { "name": "RL-77 空爆火箭弹发射器", - "path": "img/helldivers/RL-77 空爆火箭弹发射器.png", + "path": "res/img/helldivers/RL-77 空爆火箭弹发射器.png", "type": "blue", "alias": [ "空爆" @@ -554,7 +554,7 @@ }, { "name": "RS-422 磁轨炮", - "path": "img/helldivers/RS-422 磁轨炮.png", + "path": "res/img/helldivers/RS-422 磁轨炮.png", "type": "blue", "alias": [ "磁轨", @@ -564,7 +564,7 @@ }, { "name": "S-11 矛枪", - "path": "img/helldivers/S-11 矛枪.png", + "path": "res/img/helldivers/S-11 矛枪.png", "type": "blue", "alias": [ "毒矛" @@ -573,7 +573,7 @@ }, { "name": "SH-20 防弹护盾背包", - "path": "img/helldivers/SH-20 防弹护盾背包.png", + "path": "res/img/helldivers/SH-20 防弹护盾背包.png", "type": "blue", "alias": [ "防弹盾" @@ -582,7 +582,7 @@ }, { "name": "SH-32 防护罩生成包", - "path": "img/helldivers/SH-32 防护罩生成包.png", + "path": "res/img/helldivers/SH-32 防护罩生成包.png", "type": "blue", "alias": [ "蛋盾" @@ -591,7 +591,7 @@ }, { "name": "SH-51 定向护盾", - "path": "img/helldivers/SH-51 定向护盾.png", + "path": "res/img/helldivers/SH-51 定向护盾.png", "type": "blue", "alias": [ "定向蛋盾" @@ -600,7 +600,7 @@ }, { "name": "StA-X3 W.A.S.P.发射器", - "path": "img/helldivers/StA-X3 W.A.S.P.发射器.png", + "path": "res/img/helldivers/StA-X3 W.A.S.P.发射器.png", "type": "blue", "alias": [ "小蜜蜂" @@ -609,7 +609,7 @@ }, { "name": "TD-220 堡垒MK XVI", - "path": "img/helldivers/TD-220 堡垒MK XVI.png", + "path": "res/img/helldivers/TD-220 堡垒MK XVI.png", "type": "blue", "alias": [ "坦克" @@ -618,7 +618,7 @@ }, { "name": "TX-41 灭菌器", - "path": "img/helldivers/TX-41 灭菌器.png", + "path": "res/img/helldivers/TX-41 灭菌器.png", "type": "blue", "alias": [ "毒喷" @@ -627,7 +627,7 @@ }, { "name": "轨道120MM高爆弹火力网", - "path": "img/helldivers/轨道120MM高爆弹火力网.png", + "path": "res/img/helldivers/轨道120MM高爆弹火力网.png", "type": "red", "alias": [ "120" @@ -636,7 +636,7 @@ }, { "name": "轨道380MM高爆弹火力网", - "path": "img/helldivers/轨道380MM高爆弹火力网.png", + "path": "res/img/helldivers/轨道380MM高爆弹火力网.png", "type": "red", "alias": [ "380" @@ -645,7 +645,7 @@ }, { "name": "轨道凝固汽油弹火力网", - "path": "img/helldivers/轨道凝固汽油弹火力网.png", + "path": "res/img/helldivers/轨道凝固汽油弹火力网.png", "type": "red", "alias": [ "轨道火" @@ -654,7 +654,7 @@ }, { "name": "轨道加特林火力网", - "path": "img/helldivers/轨道加特林火力网.png", + "path": "res/img/helldivers/轨道加特林火力网.png", "type": "red", "alias": [ "轨道加特林" @@ -663,7 +663,7 @@ }, { "name": "轨道毒气攻击", - "path": "img/helldivers/轨道毒气攻击.png", + "path": "res/img/helldivers/轨道毒气攻击.png", "type": "red", "alias": [ "轨道毒" @@ -672,7 +672,7 @@ }, { "name": "轨道游走火力网", - "path": "img/helldivers/轨道游走火力网.png", + "path": "res/img/helldivers/轨道游走火力网.png", "type": "red", "alias": [ "轨道游走" @@ -681,7 +681,7 @@ }, { "name": "轨道激光炮", - "path": "img/helldivers/轨道激光炮.png", + "path": "res/img/helldivers/轨道激光炮.png", "type": "red", "alias": [ "轨道激光" @@ -690,7 +690,7 @@ }, { "name": "轨道炮攻击", - "path": "img/helldivers/轨道炮攻击.png", + "path": "res/img/helldivers/轨道炮攻击.png", "type": "red", "alias": [ "轨道自瞄" @@ -699,7 +699,7 @@ }, { "name": "轨道烟雾攻击", - "path": "img/helldivers/轨道烟雾攻击.png", + "path": "res/img/helldivers/轨道烟雾攻击.png", "type": "red", "alias": [ "轨道烟" @@ -708,7 +708,7 @@ }, { "name": "轨道电磁冲击波攻击", - "path": "img/helldivers/轨道电磁冲击波攻击.png", + "path": "res/img/helldivers/轨道电磁冲击波攻击.png", "type": "red", "alias": [ "轨道电磁" @@ -717,7 +717,7 @@ }, { "name": "轨道空爆攻击", - "path": "img/helldivers/轨道空爆攻击.png", + "path": "res/img/helldivers/轨道空爆攻击.png", "type": "red", "alias": [ "轨道空爆" @@ -726,7 +726,7 @@ }, { "name": "轨道精准攻击", - "path": "img/helldivers/轨道精准攻击.png", + "path": "res/img/helldivers/轨道精准攻击.png", "type": "red", "alias": [ "" @@ -735,7 +735,7 @@ }, { "name": "飞鹰110MM火箭巢", - "path": "img/helldivers/飞鹰110MM火箭巢.png", + "path": "res/img/helldivers/飞鹰110MM火箭巢.png", "type": "red", "alias": [ "飞鹰110" @@ -744,7 +744,7 @@ }, { "name": "飞鹰500KG炸弹", - "path": "img/helldivers/飞鹰500KG炸弹.png", + "path": "res/img/helldivers/飞鹰500KG炸弹.png", "type": "red", "alias": [ "500", @@ -754,7 +754,7 @@ }, { "name": "飞鹰凝固汽油弹空袭", - "path": "img/helldivers/飞鹰凝固汽油弹空袭.png", + "path": "res/img/helldivers/飞鹰凝固汽油弹空袭.png", "type": "red", "alias": [ "飞鹰火" @@ -763,7 +763,7 @@ }, { "name": "飞鹰机枪扫射", - "path": "img/helldivers/飞鹰机枪扫射.png", + "path": "res/img/helldivers/飞鹰机枪扫射.png", "type": "red", "alias": [ "飞鹰机枪" @@ -772,7 +772,7 @@ }, { "name": "飞鹰烟雾攻击", - "path": "img/helldivers/飞鹰烟雾攻击.png", + "path": "res/img/helldivers/飞鹰烟雾攻击.png", "type": "red", "alias": [ "飞鹰烟" @@ -781,7 +781,7 @@ }, { "name": "飞鹰空袭", - "path": "img/helldivers/飞鹰空袭.png", + "path": "res/img/helldivers/飞鹰空袭.png", "type": "red", "alias": [ "" @@ -790,7 +790,7 @@ }, { "name": "飞鹰集束炸弹", - "path": "img/helldivers/飞鹰集束炸弹.png", + "path": "res/img/helldivers/飞鹰集束炸弹.png", "type": "red", "alias": [ "飞鹰集束" diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/handlers/__init__.py b/hexi/plugins/nonebot_plugin_helldivers_tools/handlers/__init__.py new file mode 100644 index 0000000..b64e8f5 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_helldivers_tools/handlers/__init__.py @@ -0,0 +1,3 @@ +"""绝地潜兵小助手 —— Trigger 层。""" + +from . import war # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/handlers/war.py b/hexi/plugins/nonebot_plugin_helldivers_tools/handlers/war.py new file mode 100644 index 0000000..edeb9d7 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_helldivers_tools/handlers/war.py @@ -0,0 +1,129 @@ +"""绝地潜兵小助手 —— 触发器(Trigger)层。""" + +from __future__ import annotations + +import os +import re +from pathlib import Path +from typing import Optional + +import httpx +from nonebot import logger, on_command +from nonebot.adapters.onebot.v11 import MessageEvent, MessageSegment +from nonebot.internal.params import ArgPlainText +from nonebot.matcher import Matcher +from PIL import Image + +from ..services.equipment import get_equipment_by_combination, get_random_equipment +from ..services.hd2_api import get_briefing_data +from ..utils import gen_ms_img, pic2b64 +from ..utils.war_renderer import render_war_briefing + +_BASE_DIR = Path(__file__).resolve().parents[1] +_IMG_DIR = _BASE_DIR / "res" / "img" + + +async def _send_war_card(matcher: Matcher, ev: MessageEvent, top_per_race: Optional[int]) -> None: + await matcher.send("正在获取前线战况,请民主的等待!") + try: + data = await get_briefing_data() + png = await render_war_briefing(data, top_per_race) + except Exception as e: + logger.exception("获取战况失败") + await matcher.finish( + MessageSegment.reply(ev.message_id) + + f"战况获取失败:{type(e).__name__}:{e}" + ) + return + mes = (MessageSegment.reply(ev.message_id), gen_ms_img(png)) + await matcher.send(mes) + + +war_situation = on_command("简报", aliases={"简报"}) +war_detail = on_command("详报", aliases={"详报"}) + + +@war_situation.handle() +async def get_war_info(ev: MessageEvent): + await _send_war_card(war_situation, ev, top_per_race=4) + + +@war_detail.handle() +async def get_war_detail(ev: MessageEvent): + await _send_war_card(war_detail, ev, top_per_race=None) + + +async def download_url(url: str) -> bytes | None: + async with httpx.AsyncClient() as client: + for i in range(3): + try: + resp = await client.get(url) + if resp.status_code != 200: + continue + return resp.content + except Exception as e: + logger.error(f"Error downloading {url}, retry {i}/3: {str(e)}") + return None + + +random_helldivers = on_command("随机战备", aliases={"随机战备"}, block=True) + +board_path = str(_IMG_DIR / "board2.png") +PROMPT = MessageSegment.image(pic2b64(Image.open(board_path))) + +error_count = 0 + + +@random_helldivers.got("pick_type", prompt=PROMPT) +async def got_random_helldivers(event: MessageEvent, pick_type: str = ArgPlainText()): + global error_count + if error_count >= 2: + await random_helldivers.finish("已回归平民生活——") + logger.info("持续输错退出随机战备") + error_count = 0 + return + logger.info(f"用户选择的战备类型: {pick_type}") + if not is_number(pick_type): + error_count += 1 + await random_helldivers.reject(f"您输入的 {pick_type} 非数字,请重新输入1到11,或者输入0退出") + elif int(pick_type) not in range(12): + error_count += 1 + await random_helldivers.reject(f"您输入的 {pick_type} 不在范围内,请重新输入1到11,或者输入0退出") + elif int(pick_type) == 0: + await random_helldivers.finish("已回归平民生活——") + logger.info("用户选择退出随机战备") + error_count = 0 + return + + mix_msg = (MessageSegment.reply(event.message_id),) + + type_combinations = { + 2: {"red": 2, "blue": 1, "green": 1}, + 3: {"green": 2, "red": 1, "blue": 1}, + 4: {"blue": 2, "green": 1, "red": 1}, + 5: {"red": 3, "blue": 1}, + 6: {"green": 3, "blue": 1}, + 7: {"red": 2, "blue": 2}, + 8: {"blue": 2, "green": 2}, + 9: {"green": 2, "red": 2}, + 10: {"red": 4}, + 11: {"green": 4}, + } + + if int(pick_type) == 1: + logger.info("用户选择纯随机战备") + result = await get_random_equipment(4) + else: + combination = type_combinations.get(int(pick_type)) + logger.info(f"用户选择的战备组合: {combination}") + result = await get_equipment_by_combination(combination) + + final_msg = MessageSegment.text("您的随机结果是:\n") + image_tuple = gen_ms_img(result) + mix_msg += (final_msg, image_tuple) + + await random_helldivers.finish(mix_msg) + + +def is_number(s): + return bool(re.match(r"^[0-9]+$", s)) diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/TCS.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/TCS.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/TCS.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/TCS.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/Heavy_SEAF_Presence_Icon.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/Heavy_SEAF_Presence_Icon.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/Heavy_SEAF_Presence_Icon.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/Heavy_SEAF_Presence_Icon.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/Spore_Burst_Strain_Icon.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/Spore_Burst_Strain_Icon.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/Spore_Burst_Strain_Icon.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/Spore_Burst_Strain_Icon.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/Wrench.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/Wrench.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/Wrench.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/Wrench.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/fonts/Steelworks-Regular.Ds5vcyJ-.woff b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/fonts/Steelworks-Regular.Ds5vcyJ-.woff similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/fonts/Steelworks-Regular.Ds5vcyJ-.woff rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/fonts/Steelworks-Regular.Ds5vcyJ-.woff diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/fonts/TTSquares-Black.s7Ta46_A.woff b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/fonts/TTSquares-Black.s7Ta46_A.woff similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/fonts/TTSquares-Black.s7Ta46_A.woff rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/fonts/TTSquares-Black.s7Ta46_A.woff diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/fonts/TTSquares-Bold.Bgw268aV.woff b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/fonts/TTSquares-Bold.Bgw268aV.woff similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/fonts/TTSquares-Bold.Bgw268aV.woff rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/fonts/TTSquares-Bold.Bgw268aV.woff diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/campaign-defense.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/campaign-defense.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/campaign-defense.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/campaign-defense.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/campaign-defense.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/campaign-defense.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/campaign-defense.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/campaign-defense.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/campaign-high-priority.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/campaign-high-priority.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/campaign-high-priority.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/campaign-high-priority.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/campaign-high-priority.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/campaign-high-priority.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/campaign-high-priority.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/campaign-high-priority.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/campaign-invasion.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/campaign-invasion.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/campaign-invasion.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/campaign-invasion.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/campaign-invasion.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/campaign-invasion.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/campaign-invasion.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/campaign-invasion.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/campaign-liberation.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/campaign-liberation.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/campaign-liberation.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/campaign-liberation.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/campaign-liberation.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/campaign-liberation.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/campaign-liberation.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/campaign-liberation.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/campaign-recon.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/campaign-recon.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/campaign-recon.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/campaign-recon.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/campaign-recon.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/campaign-recon.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/campaign-recon.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/campaign-recon.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-appropriators.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-appropriators.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-appropriators.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-appropriators.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-appropriators.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-appropriators.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-appropriators.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-appropriators.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-cyborgs.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-cyborgs.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-cyborgs.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-cyborgs.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-cyborgs.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-cyborgs.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-cyborgs.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-cyborgs.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-dragonroach.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-dragonroach.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-dragonroach.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-dragonroach.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-dragonroach.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-dragonroach.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-dragonroach.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-dragonroach.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-dss-blockade.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-dss-blockade.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-dss-blockade.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-dss-blockade.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-dss-blockade.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-dss-blockade.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-dss-blockade.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-dss-blockade.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-dss-eagle.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-dss-eagle.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-dss-eagle.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-dss-eagle.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-dss-eagle.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-dss-eagle.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-dss-eagle.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-dss-eagle.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-dss-heavy-ordnance.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-dss-heavy-ordnance.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-dss-heavy-ordnance.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-dss-heavy-ordnance.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-dss-heavy-ordnance.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-dss-heavy-ordnance.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-dss-heavy-ordnance.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-dss-heavy-ordnance.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-dss.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-dss.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-dss.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-dss.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-dss.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-dss.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-dss.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-dss.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-factory-hub.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-factory-hub.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-factory-hub.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-factory-hub.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-factory-hub.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-factory-hub.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-factory-hub.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-factory-hub.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-generic.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-generic.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-generic.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-generic.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-gloom.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-gloom.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-gloom.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-gloom.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-gloom.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-gloom.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-gloom.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-gloom.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-heavy-seaf.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-heavy-seaf.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-heavy-seaf.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-heavy-seaf.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-heavy-seaf.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-heavy-seaf.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-heavy-seaf.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-heavy-seaf.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-hive-lord.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-hive-lord.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-hive-lord.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-hive-lord.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-hive-lord.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-hive-lord.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-hive-lord.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-hive-lord.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-hive-world.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-hive-world.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-hive-world.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-hive-world.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-hive-world.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-hive-world.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-hive-world.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-hive-world.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-incineration-corps.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-incineration-corps.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-incineration-corps.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-incineration-corps.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-incineration-corps.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-incineration-corps.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-incineration-corps.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-incineration-corps.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-invasion-fleet.webp b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-invasion-fleet.webp similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-invasion-fleet.webp rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-invasion-fleet.webp diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-jet-brigade-factory.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-jet-brigade-factory.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-jet-brigade-factory.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-jet-brigade-factory.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-jet-brigade-factory.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-jet-brigade-factory.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-jet-brigade-factory.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-jet-brigade-factory.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-jet-brigade.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-jet-brigade.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-jet-brigade.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-jet-brigade.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-jet-brigade.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-jet-brigade.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-jet-brigade.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-jet-brigade.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-mindless-masses.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-mindless-masses.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-mindless-masses.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-mindless-masses.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-mindless-masses.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-mindless-masses.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-mindless-masses.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-mindless-masses.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-mine.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-mine.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-mine.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-mine.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-predator-strain.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-predator-strain.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-predator-strain.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-predator-strain.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-predator-strain.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-predator-strain.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-predator-strain.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-predator-strain.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-rupture-strain.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-rupture-strain.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-rupture-strain.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-rupture-strain.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-rupture-strain.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-rupture-strain.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-rupture-strain.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-rupture-strain.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-spore-burst-strain.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-spore-burst-strain.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-spore-burst-strain.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-spore-burst-strain.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-spore-burst-strain.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-spore-burst-strain.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-spore-burst-strain.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-spore-burst-strain.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-tcs-plus.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-tcs-plus.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-tcs-plus.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-tcs-plus.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-tcs-plus.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-tcs-plus.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-tcs-plus.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-tcs-plus.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-vote-snatchers.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-vote-snatchers.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-vote-snatchers.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-vote-snatchers.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-vote-snatchers.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-vote-snatchers.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/effect-vote-snatchers.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/effect-vote-snatchers.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/faction-automaton.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/faction-automaton.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/faction-automaton.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/faction-automaton.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/faction-automaton.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/faction-automaton.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/faction-automaton.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/faction-automaton.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/faction-illuminate.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/faction-illuminate.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/faction-illuminate.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/faction-illuminate.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/faction-illuminate.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/faction-illuminate.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/faction-illuminate.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/faction-illuminate.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/faction-super-earth.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/faction-super-earth.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/faction-super-earth.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/faction-super-earth.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/faction-super-earth.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/faction-super-earth.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/faction-super-earth.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/faction-super-earth.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/faction-terminid.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/faction-terminid.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/faction-terminid.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/faction-terminid.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/faction-terminid.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/faction-terminid.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/faction-terminid.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/faction-terminid.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-acid-storms.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-acid-storms.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-acid-storms.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-acid-storms.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-acid-storms.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-acid-storms.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-acid-storms.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-acid-storms.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-blizzards.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-blizzards.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-blizzards.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-blizzards.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-blizzards.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-blizzards.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-blizzards.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-blizzards.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-extreme-cold.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-extreme-cold.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-extreme-cold.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-extreme-cold.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-extreme-cold.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-extreme-cold.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-extreme-cold.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-extreme-cold.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-fire-tornados.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-fire-tornados.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-fire-tornados.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-fire-tornados.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-fire-tornados.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-fire-tornados.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-fire-tornados.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-fire-tornados.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-intense-heat.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-intense-heat.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-intense-heat.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-intense-heat.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-intense-heat.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-intense-heat.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-intense-heat.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-intense-heat.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-ion-storms.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-ion-storms.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-ion-storms.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-ion-storms.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-ion-storms.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-ion-storms.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-ion-storms.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-ion-storms.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-meteor-storms.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-meteor-storms.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-meteor-storms.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-meteor-storms.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-meteor-storms.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-meteor-storms.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-meteor-storms.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-meteor-storms.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-rainstorms.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-rainstorms.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-rainstorms.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-rainstorms.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-rainstorms.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-rainstorms.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-rainstorms.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-rainstorms.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-sandstorms.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-sandstorms.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-sandstorms.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-sandstorms.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-sandstorms.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-sandstorms.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-sandstorms.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-sandstorms.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-thick-fog.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-thick-fog.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-thick-fog.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-thick-fog.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-thick-fog.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-thick-fog.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-thick-fog.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-thick-fog.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-tremors.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-tremors.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-tremors.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-tremors.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-tremors.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-tremors.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-tremors.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-tremors.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-volcanic-activity.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-volcanic-activity.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-volcanic-activity.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-volcanic-activity.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-volcanic-activity.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-volcanic-activity.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/hazard-volcanic-activity.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/hazard-volcanic-activity.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/misc-helldiver.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/misc-helldiver.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/misc-helldiver.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/misc-helldiver.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/misc-helldiver.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/misc-helldiver.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/misc-helldiver.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/misc-helldiver.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/misc-helldivers-2.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/misc-helldivers-2.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/misc-helldivers-2.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/misc-helldivers-2.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/misc-helldivers.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/misc-helldivers.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/misc-helldivers.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/misc-helldivers.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/misc-major-order.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/misc-major-order.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/misc-major-order.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/misc-major-order.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/misc-major-order.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/misc-major-order.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/misc-major-order.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/misc-major-order.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/misc-news.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/misc-news.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/misc-news.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/misc-news.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/misc-news.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/misc-news.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/icons/misc-news.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/icons/misc-news.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/acamar-iv.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/acamar-iv.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/acamar-iv.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/acamar-iv.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/achernar-secundus.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/achernar-secundus.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/achernar-secundus.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/achernar-secundus.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/achird-iii.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/achird-iii.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/achird-iii.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/achird-iii.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/acrux-ix.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/acrux-ix.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/acrux-ix.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/acrux-ix.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/acrux.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/acrux.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/acrux.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/acrux.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/adhara.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/adhara.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/adhara.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/adhara.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/aesir-pass.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/aesir-pass.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/aesir-pass.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/aesir-pass.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/afoyay-bay.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/afoyay-bay.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/afoyay-bay.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/afoyay-bay.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/ain-5.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/ain-5.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/ain-5.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/ain-5.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/alamak-vii.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/alamak-vii.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/alamak-vii.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/alamak-vii.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/alaraph.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/alaraph.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/alaraph.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/alaraph.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/angel-s-venture.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/angel-s-venture.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/angel-s-venture.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/angel-s-venture.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/aurora-bay.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/aurora-bay.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/aurora-bay.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/aurora-bay.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/azterra.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/azterra.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/azterra.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/azterra.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/basquine-viii.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/basquine-viii.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/basquine-viii.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/basquine-viii.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/blistica.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/blistica.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/blistica.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/blistica.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/bore-rock.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/bore-rock.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/bore-rock.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/bore-rock.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/borea.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/borea.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/borea.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/borea.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/brilliance.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/brilliance.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/brilliance.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/brilliance.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/charbal-vii.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/charbal-vii.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/charbal-vii.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/charbal-vii.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/charon-prime.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/charon-prime.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/charon-prime.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/charon-prime.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/choepessa-iv.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/choepessa-iv.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/choepessa-iv.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/choepessa-iv.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/choohe.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/choohe.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/choohe.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/choohe.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/chort-bay.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/chort-bay.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/chort-bay.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/chort-bay.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/cirrus.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/cirrus.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/cirrus.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/cirrus.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/claorell.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/claorell.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/claorell.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/claorell.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/clasa.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/clasa.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/clasa.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/clasa.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/crimsica.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/crimsica.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/crimsica.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/crimsica.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/curia.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/curia.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/curia.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/curia.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/darius-ii.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/darius-ii.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/darius-ii.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/darius-ii.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/demiurg.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/demiurg.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/demiurg.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/demiurg.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/duma-tyr.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/duma-tyr.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/duma-tyr.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/duma-tyr.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/elysian-meadows.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/elysian-meadows.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/elysian-meadows.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/elysian-meadows.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/erata-prime.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/erata-prime.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/erata-prime.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/erata-prime.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/erson-sands.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/erson-sands.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/erson-sands.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/erson-sands.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/esker.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/esker.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/esker.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/esker.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/estanu.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/estanu.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/estanu.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/estanu.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/eukoria.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/eukoria.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/eukoria.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/eukoria.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/fenrir-iii.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/fenrir-iii.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/fenrir-iii.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/fenrir-iii.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/fori-prime.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/fori-prime.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/fori-prime.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/fori-prime.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/fronteria.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/fronteria.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/fronteria.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/fronteria.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/gacrux.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/gacrux.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/gacrux.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/gacrux.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/gaellivare.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/gaellivare.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/gaellivare.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/gaellivare.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/gar-haren.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/gar-haren.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/gar-haren.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/gar-haren.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/gatria.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/gatria.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/gatria.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/gatria.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/gemma.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/gemma.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/gemma.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/gemma.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/genesis-prime.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/genesis-prime.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/genesis-prime.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/genesis-prime.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/grand-errant.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/grand-errant.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/grand-errant.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/grand-errant.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/haldus.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/haldus.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/haldus.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/haldus.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/heeth.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/heeth.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/heeth.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/heeth.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/hellmire.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/hellmire.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/hellmire.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/hellmire.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/herthon-secundus.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/herthon-secundus.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/herthon-secundus.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/herthon-secundus.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/hesoe-prime.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/hesoe-prime.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/hesoe-prime.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/hesoe-prime.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/heze-bay.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/heze-bay.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/heze-bay.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/heze-bay.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/hort.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/hort.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/hort.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/hort.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/hydrobius.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/hydrobius.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/hydrobius.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/hydrobius.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/ingmar.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/ingmar.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/ingmar.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/ingmar.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/iro.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/iro.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/iro.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/iro.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/irulta.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/irulta.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/irulta.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/irulta.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/julheim.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/julheim.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/julheim.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/julheim.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/karlia.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/karlia.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/karlia.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/karlia.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/keid.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/keid.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/keid.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/keid.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/kerth-secundus.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/kerth-secundus.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/kerth-secundus.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/kerth-secundus.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/lesath.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/lesath.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/lesath.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/lesath.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/luxuriant.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/luxuriant.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/luxuriant.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/luxuriant.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/mantes.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/mantes.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/mantes.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/mantes.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/marfark.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/marfark.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/marfark.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/marfark.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/martale.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/martale.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/martale.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/martale.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/matar-bay.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/matar-bay.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/matar-bay.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/matar-bay.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/meissa.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/meissa.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/meissa.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/meissa.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/menkent.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/menkent.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/menkent.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/menkent.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/merak.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/merak.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/merak.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/merak.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/merga-iv.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/merga-iv.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/merga-iv.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/merga-iv.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/mintoria.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/mintoria.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/mintoria.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/mintoria.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/mog.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/mog.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/mog.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/mog.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/mort.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/mort.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/mort.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/mort.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/myrium.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/myrium.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/myrium.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/myrium.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/new-stockholm.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/new-stockholm.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/new-stockholm.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/new-stockholm.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/nivel-43.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/nivel-43.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/nivel-43.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/nivel-43.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/oasis.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/oasis.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/oasis.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/oasis.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/omicron.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/omicron.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/omicron.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/omicron.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/p-pli-ix.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/p-pli-ix.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/p-pli-ix.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/p-pli-ix.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/pandion-xxiv.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/pandion-xxiv.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/pandion-xxiv.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/pandion-xxiv.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/parsh.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/parsh.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/parsh.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/parsh.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/partion.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/partion.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/partion.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/partion.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/peacock.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/peacock.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/peacock.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/peacock.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/phact-bay.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/phact-bay.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/phact-bay.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/phact-bay.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/pherkad-secundus.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/pherkad-secundus.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/pherkad-secundus.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/pherkad-secundus.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/polaris-prime.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/polaris-prime.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/polaris-prime.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/polaris-prime.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/rd-4.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/rd-4.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/rd-4.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/rd-4.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/reaf.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/reaf.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/reaf.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/reaf.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/regnus.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/regnus.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/regnus.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/regnus.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/rirga-bay.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/rirga-bay.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/rirga-bay.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/rirga-bay.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/rogue-5.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/rogue-5.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/rogue-5.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/rogue-5.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/sangis.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/sangis.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/sangis.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/sangis.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/shelt.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/shelt.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/shelt.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/shelt.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/shete.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/shete.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/shete.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/shete.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/siemnot.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/siemnot.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/siemnot.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/siemnot.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/socorro-iii.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/socorro-iii.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/socorro-iii.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/socorro-iii.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/tarsh.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/tarsh.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/tarsh.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/tarsh.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/terrek.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/terrek.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/terrek.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/terrek.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/trandor.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/trandor.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/trandor.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/trandor.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/troost.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/troost.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/troost.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/troost.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/turing.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/turing.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/turing.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/turing.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/ursica-xi.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/ursica-xi.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/ursica-xi.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/ursica-xi.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/ustotu.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/ustotu.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/ustotu.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/ustotu.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/valmox.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/valmox.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/valmox.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/valmox.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/vandalon-iv.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/vandalon-iv.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/vandalon-iv.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/vandalon-iv.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/varylia-5.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/varylia-5.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/varylia-5.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/varylia-5.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/vega-bay.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/vega-bay.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/vega-bay.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/vega-bay.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/veld.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/veld.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/veld.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/veld.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/vernen-wells.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/vernen-wells.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/vernen-wells.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/vernen-wells.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/vog-sojoth.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/vog-sojoth.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/vog-sojoth.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/vog-sojoth.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/wasat.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/wasat.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/wasat.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/wasat.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/wezen.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/wezen.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/wezen.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/wezen.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/x-45.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/x-45.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/x-45.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/x-45.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/yed-prior.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/yed-prior.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/yed-prior.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/yed-prior.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/zea-rugosia.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/zea-rugosia.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/zea-rugosia.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/zea-rugosia.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/zefia.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/zefia.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/zefia.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/zefia.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/zosma.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/zosma.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/zosma.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/zosma.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/zygos.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/zygos.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/zygos.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/zygos.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/zzaniah-prime.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/zzaniah-prime.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/planets/zzaniah-prime.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/planets/zzaniah-prime.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/描述性文本.txt b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/描述性文本.txt similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/assets/描述性文本.txt rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/assets/描述性文本.txt diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/board.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/board.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/board.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/board.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/board2.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/board2.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/board2.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/board2.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/AC-8 机炮.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/AC-8 机炮.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/AC-8 机炮.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/AC-8 机炮.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/APW-1 反器材步枪.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/APW-1 反器材步枪.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/APW-1 反器材步枪.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/APW-1 反器材步枪.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/ARC-3 电弧发射器.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/ARC-3 电弧发射器.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/ARC-3 电弧发射器.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/ARC-3 电弧发射器.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/AX-LAS-5 漫游车.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/AX-LAS-5 漫游车.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/AX-LAS-5 漫游车.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/AX-LAS-5 漫游车.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/AX·AR-23 护卫犬.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/AX·AR-23 护卫犬.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/AX·AR-23 护卫犬.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/AX·AR-23 护卫犬.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/AX·ARC-3 K-9.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/AX·ARC-3 K-9.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/AX·ARC-3 K-9.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/AX·ARC-3 K-9.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/AX·FLAM-75 热狗.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/AX·FLAM-75 热狗.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/AX·FLAM-75 热狗.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/AX·FLAM-75 热狗.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/AX·TX-13 腐息.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/AX·TX-13 腐息.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/AX·TX-13 腐息.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/AX·TX-13 腐息.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/A·AC-8 自动哨戒炮.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/A·AC-8 自动哨戒炮.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/A·AC-8 自动哨戒炮.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/A·AC-8 自动哨戒炮.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/A·ARC-3 特斯拉塔.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/A·ARC-3 特斯拉塔.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/A·ARC-3 特斯拉塔.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/A·ARC-3 特斯拉塔.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/A·FLAM-40 火焰喷射哨戒炮.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/A·FLAM-40 火焰喷射哨戒炮.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/A·FLAM-40 火焰喷射哨戒炮.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/A·FLAM-40 火焰喷射哨戒炮.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/A·G-16 加特林哨戒炮.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/A·G-16 加特林哨戒炮.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/A·G-16 加特林哨戒炮.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/A·G-16 加特林哨戒炮.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/A·GM-17 瓦斯迫击哨戒炮.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/A·GM-17 瓦斯迫击哨戒炮.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/A·GM-17 瓦斯迫击哨戒炮.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/A·GM-17 瓦斯迫击哨戒炮.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/A·LAS-98 激光哨戒炮.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/A·LAS-98 激光哨戒炮.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/A·LAS-98 激光哨戒炮.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/A·LAS-98 激光哨戒炮.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/A·M-12 迫击哨戒炮.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/A·M-12 迫击哨戒炮.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/A·M-12 迫击哨戒炮.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/A·M-12 迫击哨戒炮.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/A·M-23 电磁冲击波迫击哨戒炮.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/A·M-23 电磁冲击波迫击哨戒炮.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/A·M-23 电磁冲击波迫击哨戒炮.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/A·M-23 电磁冲击波迫击哨戒炮.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/A·MG-43 哨戒机枪.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/A·MG-43 哨戒机枪.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/A·MG-43 哨戒机枪.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/A·MG-43 哨戒机枪.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/A·MLS-X 火箭哨戒炮.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/A·MLS-X 火箭哨戒炮.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/A·MLS-X 火箭哨戒炮.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/A·MLS-X 火箭哨戒炮.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/B-1 补给背包.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/B-1 补给背包.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/B-1 补给背包.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/B-1 补给背包.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/B-100 便携式地狱火炸弹.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/B-100 便携式地狱火炸弹.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/B-100 便携式地狱火炸弹.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/B-100 便携式地狱火炸弹.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/B·FLAM-80 焚燃者.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/B·FLAM-80 焚燃者.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/B·FLAM-80 焚燃者.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/B·FLAM-80 焚燃者.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/B·MD C4背包.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/B·MD C4背包.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/B·MD C4背包.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/B·MD C4背包.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/CQC-1 唯一真旗.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/CQC-1 唯一真旗.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/CQC-1 唯一真旗.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/CQC-1 唯一真旗.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/CQC-20 破门锤.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/CQC-20 破门锤.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/CQC-20 破门锤.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/CQC-20 破门锤.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/CQC-9 除叶工具.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/CQC-9 除叶工具.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/CQC-9 除叶工具.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/CQC-9 除叶工具.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/EAT-17 消耗性反坦克武器.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/EAT-17 消耗性反坦克武器.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/EAT-17 消耗性反坦克武器.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/EAT-17 消耗性反坦克武器.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/EAT-411 荡平者.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/EAT-411 荡平者.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/EAT-411 荡平者.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/EAT-411 荡平者.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/EAT-700 消耗性凝固汽油弹.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/EAT-700 消耗性凝固汽油弹.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/EAT-700 消耗性凝固汽油弹.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/EAT-700 消耗性凝固汽油弹.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/EXO-45 爱国者外骨骼机甲.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/EXO-45 爱国者外骨骼机甲.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/EXO-45 爱国者外骨骼机甲.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/EXO-45 爱国者外骨骼机甲.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/EXO-49 解放者外骨骼机甲.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/EXO-49 解放者外骨骼机甲.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/EXO-49 解放者外骨骼机甲.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/EXO-49 解放者外骨骼机甲.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/EXO-51 伐木者.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/EXO-51 伐木者.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/EXO-51 伐木者.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/EXO-51 伐木者.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/EXO-55 突破.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/EXO-55 突破.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/EXO-55 突破.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/EXO-55 突破.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/E·AT-12 反坦克炮台.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/E·AT-12 反坦克炮台.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/E·AT-12 反坦克炮台.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/E·AT-12 反坦克炮台.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/E·GL-21 掷弹兵防卫墙.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/E·GL-21 掷弹兵防卫墙.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/E·GL-21 掷弹兵防卫墙.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/E·GL-21 掷弹兵防卫墙.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/E·MG-101 重机枪部署支架.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/E·MG-101 重机枪部署支架.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/E·MG-101 重机枪部署支架.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/E·MG-101 重机枪部署支架.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/FAF-14 飞矛.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/FAF-14 飞矛.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/FAF-14 飞矛.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/FAF-14 飞矛.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/FLAM-40 火焰喷射器.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/FLAM-40 火焰喷射器.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/FLAM-40 火焰喷射器.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/FLAM-40 火焰喷射器.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/FX-12 防护罩生成中继器.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/FX-12 防护罩生成中继器.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/FX-12 防护罩生成中继器.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/FX-12 防护罩生成中继器.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/GL-21 榴弹发射器.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/GL-21 榴弹发射器.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/GL-21 榴弹发射器.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/GL-21 榴弹发射器.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/GL-28 弹链式榴弹发射器.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/GL-28 弹链式榴弹发射器.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/GL-28 弹链式榴弹发射器.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/GL-28 弹链式榴弹发射器.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/GL-52 缓和使者.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/GL-52 缓和使者.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/GL-52 缓和使者.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/GL-52 缓和使者.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/GR-8 无后坐力炮.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/GR-8 无后坐力炮.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/GR-8 无后坐力炮.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/GR-8 无后坐力炮.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/LAS-98 激光大炮.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/LAS-98 激光大炮.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/LAS-98 激光大炮.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/LAS-98 激光大炮.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/LAS-99 类星体加农炮.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/LAS-99 类星体加农炮.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/LAS-99 类星体加农炮.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/LAS-99 类星体加农炮.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/LIFT-182 传送背包.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/LIFT-182 传送背包.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/LIFT-182 传送背包.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/LIFT-182 传送背包.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/LIFT-850 喷射背包.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/LIFT-850 喷射背包.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/LIFT-850 喷射背包.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/LIFT-850 喷射背包.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/LIFT-860 悬浮背包.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/LIFT-860 悬浮背包.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/LIFT-860 悬浮背包.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/LIFT-860 悬浮背包.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/M-1000 重装机枪.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/M-1000 重装机枪.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/M-1000 重装机枪.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/M-1000 重装机枪.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/M-102 快速侦察载具.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/M-102 快速侦察载具.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/M-102 快速侦察载具.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/M-102 快速侦察载具.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/M-105 盟友.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/M-105 盟友.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/M-105 盟友.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/M-105 盟友.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/MD-17 反坦克地雷.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/MD-17 反坦克地雷.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/MD-17 反坦克地雷.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/MD-17 反坦克地雷.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/MD-6 反步兵雷区.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/MD-6 反步兵雷区.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/MD-6 反步兵雷区.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/MD-6 反步兵雷区.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/MD-8 毒气地雷.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/MD-8 毒气地雷.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/MD-8 毒气地雷.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/MD-8 毒气地雷.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/MD-I4 燃烧地雷.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/MD-I4 燃烧地雷.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/MD-I4 燃烧地雷.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/MD-I4 燃烧地雷.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/MG-206 重机枪.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/MG-206 重机枪.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/MG-206 重机枪.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/MG-206 重机枪.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/MG-43 机枪.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/MG-43 机枪.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/MG-43 机枪.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/MG-43 机枪.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/MGX-42 子弹风暴.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/MGX-42 子弹风暴.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/MGX-42 子弹风暴.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/MGX-42 子弹风暴.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/MLS-4X 突击兵.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/MLS-4X 突击兵.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/MLS-4X 突击兵.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/MLS-4X 突击兵.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/MS-11 单兵导弹发射井.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/MS-11 单兵导弹发射井.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/MS-11 单兵导弹发射井.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/MS-11 单兵导弹发射井.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/PLAS-45 纪元.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/PLAS-45 纪元.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/PLAS-45 纪元.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/PLAS-45 纪元.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/RL-77 空爆火箭弹发射器.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/RL-77 空爆火箭弹发射器.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/RL-77 空爆火箭弹发射器.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/RL-77 空爆火箭弹发射器.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/RS-422 磁轨炮.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/RS-422 磁轨炮.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/RS-422 磁轨炮.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/RS-422 磁轨炮.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/S-11 矛枪.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/S-11 矛枪.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/S-11 矛枪.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/S-11 矛枪.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/SH-20 防弹护盾背包.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/SH-20 防弹护盾背包.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/SH-20 防弹护盾背包.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/SH-20 防弹护盾背包.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/SH-32 防护罩生成包.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/SH-32 防护罩生成包.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/SH-32 防护罩生成包.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/SH-32 防护罩生成包.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/SH-51 定向护盾.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/SH-51 定向护盾.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/SH-51 定向护盾.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/SH-51 定向护盾.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/StA-X3 W.A.S.P.发射器.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/StA-X3 W.A.S.P.发射器.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/StA-X3 W.A.S.P.发射器.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/StA-X3 W.A.S.P.发射器.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/TD-220 堡垒MK XVI.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/TD-220 堡垒MK XVI.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/TD-220 堡垒MK XVI.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/TD-220 堡垒MK XVI.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/TX-41 灭菌器.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/TX-41 灭菌器.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/TX-41 灭菌器.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/TX-41 灭菌器.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道120MM高爆弹火力网.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道120MM高爆弹火力网.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道120MM高爆弹火力网.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道120MM高爆弹火力网.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道380MM高爆弹火力网.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道380MM高爆弹火力网.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道380MM高爆弹火力网.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道380MM高爆弹火力网.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道凝固汽油弹火力网.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道凝固汽油弹火力网.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道凝固汽油弹火力网.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道凝固汽油弹火力网.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道加特林火力网.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道加特林火力网.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道加特林火力网.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道加特林火力网.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道厌恶攻击.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道厌恶攻击.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道厌恶攻击.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道厌恶攻击.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道毒气攻击.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道毒气攻击.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道毒气攻击.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道毒气攻击.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道游走火力网.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道游走火力网.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道游走火力网.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道游走火力网.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道激光炮.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道激光炮.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道激光炮.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道激光炮.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道炮攻击.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道炮攻击.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道炮攻击.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道炮攻击.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道烟雾攻击.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道烟雾攻击.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道烟雾攻击.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道烟雾攻击.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道电磁冲击波攻击.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道电磁冲击波攻击.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道电磁冲击波攻击.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道电磁冲击波攻击.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道空爆攻击.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道空爆攻击.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道空爆攻击.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道空爆攻击.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道精准攻击.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道精准攻击.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/轨道精准攻击.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/轨道精准攻击.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/飞鹰110MM火箭巢.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/飞鹰110MM火箭巢.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/飞鹰110MM火箭巢.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/飞鹰110MM火箭巢.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/飞鹰500KG炸弹.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/飞鹰500KG炸弹.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/飞鹰500KG炸弹.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/飞鹰500KG炸弹.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/飞鹰凝固汽油弹空袭.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/飞鹰凝固汽油弹空袭.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/飞鹰凝固汽油弹空袭.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/飞鹰凝固汽油弹空袭.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/飞鹰机枪扫射.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/飞鹰机枪扫射.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/飞鹰机枪扫射.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/飞鹰机枪扫射.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/飞鹰烟雾攻击.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/飞鹰烟雾攻击.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/飞鹰烟雾攻击.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/飞鹰烟雾攻击.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/飞鹰空袭.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/飞鹰空袭.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/飞鹰空袭.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/飞鹰空袭.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/飞鹰集束炸弹.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/飞鹰集束炸弹.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/helldivers/飞鹰集束炸弹.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/helldivers/飞鹰集束炸弹.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/README.txt b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/README.txt similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/README.txt rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/README.txt diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/campaign/campaign-defense.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/campaign/campaign-defense.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/campaign/campaign-defense.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/campaign/campaign-defense.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/campaign/campaign-high-priority.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/campaign/campaign-high-priority.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/campaign/campaign-high-priority.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/campaign/campaign-high-priority.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/campaign/campaign-invasion.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/campaign/campaign-invasion.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/campaign/campaign-invasion.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/campaign/campaign-invasion.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/campaign/campaign-liberation.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/campaign/campaign-liberation.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/campaign/campaign-liberation.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/campaign/campaign-liberation.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/campaign/campaign-recon.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/campaign/campaign-recon.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/campaign/campaign-recon.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/campaign/campaign-recon.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-appropriators.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-appropriators.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-appropriators.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-appropriators.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-cyborgs.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-cyborgs.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-cyborgs.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-cyborgs.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-dragonroach.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-dragonroach.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-dragonroach.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-dragonroach.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-dss-blockade.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-dss-blockade.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-dss-blockade.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-dss-blockade.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-dss-eagle.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-dss-eagle.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-dss-eagle.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-dss-eagle.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-dss-heavy-ordnance.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-dss-heavy-ordnance.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-dss-heavy-ordnance.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-dss-heavy-ordnance.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-dss.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-dss.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-dss.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-dss.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-factory-hub.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-factory-hub.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-factory-hub.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-factory-hub.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-generic.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-generic.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-generic.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-generic.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-gloom.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-gloom.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-gloom.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-gloom.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-heavy-seaf.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-heavy-seaf.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-heavy-seaf.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-heavy-seaf.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-hive-lord.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-hive-lord.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-hive-lord.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-hive-lord.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-hive-world.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-hive-world.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-hive-world.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-hive-world.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-incineration-corps.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-incineration-corps.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-incineration-corps.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-incineration-corps.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-invasion-fleet.webp b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-invasion-fleet.webp similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-invasion-fleet.webp rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-invasion-fleet.webp diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-jet-brigade-factory.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-jet-brigade-factory.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-jet-brigade-factory.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-jet-brigade-factory.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-jet-brigade.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-jet-brigade.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-jet-brigade.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-jet-brigade.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-mindless-masses.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-mindless-masses.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-mindless-masses.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-mindless-masses.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-predator-strain.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-predator-strain.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-predator-strain.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-predator-strain.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-rupture-strain.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-rupture-strain.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-rupture-strain.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-rupture-strain.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-spore-burst-strain.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-spore-burst-strain.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-spore-burst-strain.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-spore-burst-strain.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-tcs-plus.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-tcs-plus.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-tcs-plus.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-tcs-plus.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-vote-snatchers.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-vote-snatchers.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/effect/effect-vote-snatchers.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/effect/effect-vote-snatchers.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/faction/faction-automaton.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/faction/faction-automaton.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/faction/faction-automaton.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/faction/faction-automaton.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/faction/faction-illuminate.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/faction/faction-illuminate.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/faction/faction-illuminate.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/faction/faction-illuminate.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/faction/faction-super-earth.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/faction/faction-super-earth.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/faction/faction-super-earth.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/faction/faction-super-earth.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/faction/faction-terminid.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/faction/faction-terminid.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/faction/faction-terminid.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/faction/faction-terminid.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-acid-storms.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-acid-storms.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-acid-storms.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-acid-storms.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-blizzards.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-blizzards.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-blizzards.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-blizzards.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-extreme-cold.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-extreme-cold.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-extreme-cold.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-extreme-cold.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-fire-tornados.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-fire-tornados.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-fire-tornados.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-fire-tornados.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-intense-heat.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-intense-heat.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-intense-heat.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-intense-heat.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-ion-storms.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-ion-storms.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-ion-storms.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-ion-storms.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-meteor-storms.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-meteor-storms.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-meteor-storms.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-meteor-storms.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-rainstorms.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-rainstorms.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-rainstorms.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-rainstorms.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-sandstorms.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-sandstorms.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-sandstorms.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-sandstorms.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-thick-fog.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-thick-fog.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-thick-fog.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-thick-fog.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-tremors.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-tremors.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-tremors.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-tremors.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-volcanic-activity.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-volcanic-activity.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/hazard/hazard-volcanic-activity.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/hazard/hazard-volcanic-activity.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/misc/misc-helldiver.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/misc/misc-helldiver.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/misc/misc-helldiver.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/misc/misc-helldiver.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/misc/misc-helldivers-2.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/misc/misc-helldivers-2.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/misc/misc-helldivers-2.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/misc/misc-helldivers-2.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/misc/misc-helldivers.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/misc/misc-helldivers.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/misc/misc-helldivers.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/misc/misc-helldivers.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/misc/misc-major-order.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/misc/misc-major-order.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/misc/misc-major-order.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/misc/misc-major-order.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/misc/misc-news.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/misc/misc-news.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/icons/misc/misc-news.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/icons/misc/misc-news.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/super earth.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/super earth.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/super earth.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/super earth.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/企业微信截图_1787895661897.png b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/企业微信截图_1787895661897.png similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/企业微信截图_1787895661897.png rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/企业微信截图_1787895661897.png diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/喷气旅孵化厂.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/喷气旅孵化厂.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/喷气旅孵化厂.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/喷气旅孵化厂.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/工厂枢纽.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/工厂枢纽.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/工厂枢纽.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/工厂枢纽.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/虫窝世界.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/虫窝世界.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/虫窝世界.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/虫窝世界.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/蟑龙.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/蟑龙.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/蟑龙.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/蟑龙.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/阴霾.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/阴霾.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/阴霾.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/阴霾.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/img/霸王虫.svg b/hexi/plugins/nonebot_plugin_helldivers_tools/res/img/霸王虫.svg similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/img/霸王虫.svg rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/img/霸王虫.svg diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/templates/brief_card.css b/hexi/plugins/nonebot_plugin_helldivers_tools/res/templates/brief_card.css similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/templates/brief_card.css rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/templates/brief_card.css diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/templates/brief_card.html b/hexi/plugins/nonebot_plugin_helldivers_tools/res/templates/brief_card.html similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/templates/brief_card.html rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/templates/brief_card.html diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/templates/equip_card.css b/hexi/plugins/nonebot_plugin_helldivers_tools/res/templates/equip_card.css similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/templates/equip_card.css rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/templates/equip_card.css diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/templates/equip_card.html b/hexi/plugins/nonebot_plugin_helldivers_tools/res/templates/equip_card.html similarity index 100% rename from hexi/plugins/nonebot_plugin_helldivers_tools/templates/equip_card.html rename to hexi/plugins/nonebot_plugin_helldivers_tools/res/templates/equip_card.html diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/services/__init__.py b/hexi/plugins/nonebot_plugin_helldivers_tools/services/__init__.py new file mode 100644 index 0000000..075d8d1 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_helldivers_tools/services/__init__.py @@ -0,0 +1 @@ +# helldivers_tools —— Service 层。 diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/equipment.py b/hexi/plugins/nonebot_plugin_helldivers_tools/services/equipment.py similarity index 89% rename from hexi/plugins/nonebot_plugin_helldivers_tools/equipment.py rename to hexi/plugins/nonebot_plugin_helldivers_tools/services/equipment.py index 7c3deff..f1e3e36 100644 --- a/hexi/plugins/nonebot_plugin_helldivers_tools/equipment.py +++ b/hexi/plugins/nonebot_plugin_helldivers_tools/services/equipment.py @@ -1,13 +1,13 @@ import os import random from nonebot import logger -from .equipment_renderer import render_equipment_card +from ..utils.equipment_renderer import render_equipment_card from .equipment_store import list_stratagems -basic_path = os.path.dirname(__file__) +basic_path = os.path.dirname(os.path.dirname(__file__)) save_path = os.path.join(basic_path, "temp") -img_path = os.path.join(basic_path, "img") +img_path = os.path.join(basic_path, "res", "img") data_path = os.path.join(basic_path, "data") diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/equipment_store.py b/hexi/plugins/nonebot_plugin_helldivers_tools/services/equipment_store.py similarity index 99% rename from hexi/plugins/nonebot_plugin_helldivers_tools/equipment_store.py rename to hexi/plugins/nonebot_plugin_helldivers_tools/services/equipment_store.py index c1bab31..8256fa8 100644 --- a/hexi/plugins/nonebot_plugin_helldivers_tools/equipment_store.py +++ b/hexi/plugins/nonebot_plugin_helldivers_tools/services/equipment_store.py @@ -21,7 +21,7 @@ from typing import Any from nonebot import logger -basic_path = Path(__file__).resolve().parent +basic_path = Path(__file__).resolve().parents[1] DATA_DIR = basic_path / "data" DB_PATH = DATA_DIR / "equipment.db" SEED_PATH = DATA_DIR / "archive" / "equipment.json" diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/hd2_api.py b/hexi/plugins/nonebot_plugin_helldivers_tools/services/hd2_api.py similarity index 99% rename from hexi/plugins/nonebot_plugin_helldivers_tools/hd2_api.py rename to hexi/plugins/nonebot_plugin_helldivers_tools/services/hd2_api.py index 8882cc9..dae9edd 100644 --- a/hexi/plugins/nonebot_plugin_helldivers_tools/hd2_api.py +++ b/hexi/plugins/nonebot_plugin_helldivers_tools/services/hd2_api.py @@ -5,7 +5,7 @@ from typing import Any, Awaitable, Callable import httpx from nonebot import logger -from .config import config +from ..config import config # 简单的进程内缓存 {key: (过期时间戳, 数据)},用于聚合战况时只打一次接口 _cache: dict[str, tuple[float, Any]] = {} diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/utils.py b/hexi/plugins/nonebot_plugin_helldivers_tools/utils/__init__.py similarity index 71% rename from hexi/plugins/nonebot_plugin_helldivers_tools/utils.py rename to hexi/plugins/nonebot_plugin_helldivers_tools/utils/__init__.py index beb625d..73652f3 100644 --- a/hexi/plugins/nonebot_plugin_helldivers_tools/utils.py +++ b/hexi/plugins/nonebot_plugin_helldivers_tools/utils/__init__.py @@ -3,34 +3,30 @@ import io import json import os import re +import base64 from datetime import datetime from typing import Optional, Union -import base64 from PIL import Image from playwright.async_api import async_playwright from nonebot.adapters.onebot.v11 import MessageEvent, MessageSegment from nonebot import logger -basic_path = os.path.dirname(__file__) +# 插件根目录(资源/临时目录在根下) +basic_path = os.path.dirname(os.path.dirname(__file__)) save_path = os.path.join(basic_path, "temp") headers = { "User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.6) ", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", - "Accept-Language": "zh-cn" + "Accept-Language": "zh-cn", } def gen_ms_img(image: Union[bytes, Image.Image]) -> MessageSegment: if isinstance(image, bytes): - return MessageSegment.image( - pic2b64(Image.open(io.BytesIO(image))) - ) - else: - return MessageSegment.image( - pic2b64(image) - ) + return MessageSegment.image(pic2b64(Image.open(io.BytesIO(image)))) + return MessageSegment.image(pic2b64(image)) def get_present_time() -> int: @@ -42,13 +38,11 @@ async def screen_shot(url: str, time_present: int) -> Optional[str or bool]: browser = await p.chromium.launch() page = await browser.new_page() try: - # 设置视口大小 await page.set_viewport_size({"width": 2800, "height": 2800}) await page.goto(url) - await page.wait_for_load_state('networkidle') - with open(f'{basic_path}/data/plantes_mix.json', 'r', encoding='utf-8') as file: + await page.wait_for_load_state("networkidle") + with open(f"{basic_path}/data/plantes_mix.json", "r", encoding="utf-8") as file: replacements = json.load(file) - # 遍历字典,构建替换脚本 replacement_script = "" for keyword, replacement in replacements.items(): escaped_keyword = json.dumps(keyword) @@ -56,19 +50,13 @@ async def screen_shot(url: str, time_present: int) -> Optional[str or bool]: replacement_script += f""" document.body.outerHTML = document.body.outerHTML.replace(new RegExp({escaped_keyword}, 'g'), {escaped_replacement}); """ - - # 在页面上执行替换脚本 await page.evaluate(replacement_script) - except Exception as e: - return f"访问网站异常{type(e)}`{e}`" + return f"访问网站异常{type(e)}:{e}" await asyncio.sleep(1) logger.info("正在保存图片...") - img_path = os.path.join(save_path, f'{time_present}.png') - await page.screenshot( - path=img_path, - full_page=True - ) + img_path = os.path.join(save_path, f"{time_present}.png") + await page.screenshot(path=img_path, full_page=True) logger.info("正在压缩图片...") img_convert = Image.open(img_path) img_convert.save(img_path, quality=80) @@ -79,6 +67,6 @@ async def screen_shot(url: str, time_present: int) -> Optional[str or bool]: def pic2b64(pic: Image) -> str: buf = io.BytesIO() - pic.save(buf, format='PNG') + pic.save(buf, format="PNG") base64_str = base64.b64encode(buf.getvalue()).decode() - return 'base64://' + base64_str + return "base64://" + base64_str diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/equipment_renderer.py b/hexi/plugins/nonebot_plugin_helldivers_tools/utils/equipment_renderer.py similarity index 96% rename from hexi/plugins/nonebot_plugin_helldivers_tools/equipment_renderer.py rename to hexi/plugins/nonebot_plugin_helldivers_tools/utils/equipment_renderer.py index edf4d2d..90b991d 100644 --- a/hexi/plugins/nonebot_plugin_helldivers_tools/equipment_renderer.py +++ b/hexi/plugins/nonebot_plugin_helldivers_tools/utils/equipment_renderer.py @@ -12,9 +12,9 @@ from nonebot_plugin_htmlrender import get_new_page # noqa: E402 from .war_renderer import _font_faces, _logo_data_uri, _rel -basic_path = Path(__file__).resolve().parent -template_path = basic_path / "templates" -img_path = basic_path / "img" +basic_path = Path(__file__).resolve().parents[1] +template_path = basic_path / "res" / "templates" +img_path = basic_path / "res" / "img" # 战备类型 -> (标签, 主题色) TYPE_STYLE: dict[str, dict[str, str]] = { diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/icon_utils.py b/hexi/plugins/nonebot_plugin_helldivers_tools/utils/icon_utils.py similarity index 96% rename from hexi/plugins/nonebot_plugin_helldivers_tools/icon_utils.py rename to hexi/plugins/nonebot_plugin_helldivers_tools/utils/icon_utils.py index 29c9c2b..e85fad2 100644 --- a/hexi/plugins/nonebot_plugin_helldivers_tools/icon_utils.py +++ b/hexi/plugins/nonebot_plugin_helldivers_tools/utils/icon_utils.py @@ -17,8 +17,8 @@ TYPE_COLORS = { "green": "#7ecb3f", } -basic_path = Path(__file__).resolve().parent -IMG_DIR = basic_path / "img" / "helldivers" +basic_path = Path(__file__).resolve().parents[1] +IMG_DIR = basic_path / "res" / "img" / "helldivers" def sanitize_filename(name: str) -> str: @@ -111,4 +111,4 @@ def save_icon_png(png_bytes: bytes, name: str) -> str: filename = sanitize_filename(name) + ".png" dest = IMG_DIR / filename dest.write_bytes(png_bytes) - return f"img/helldivers/{filename}" \ No newline at end of file + return f"res/img/helldivers/{filename}" \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/image_builder.py b/hexi/plugins/nonebot_plugin_helldivers_tools/utils/image_builder.py similarity index 92% rename from hexi/plugins/nonebot_plugin_helldivers_tools/image_builder.py rename to hexi/plugins/nonebot_plugin_helldivers_tools/utils/image_builder.py index f2a4bda..e801b19 100644 --- a/hexi/plugins/nonebot_plugin_helldivers_tools/image_builder.py +++ b/hexi/plugins/nonebot_plugin_helldivers_tools/utils/image_builder.py @@ -4,9 +4,9 @@ from io import BytesIO from datetime import datetime from PIL import Image, ImageOps, ImageDraw, ImageFont -basic_path = os.path.dirname(__file__) +basic_path = os.path.dirname(os.path.dirname(__file__)) save_path = os.path.join(basic_path, "temp") -img_path = os.path.join(basic_path, "img") +img_path = os.path.join(basic_path, "res", "img") data_path = os.path.join(basic_path, "data") diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/war_renderer.py b/hexi/plugins/nonebot_plugin_helldivers_tools/utils/war_renderer.py similarity index 99% rename from hexi/plugins/nonebot_plugin_helldivers_tools/war_renderer.py rename to hexi/plugins/nonebot_plugin_helldivers_tools/utils/war_renderer.py index 7df2bd9..9a96798 100644 --- a/hexi/plugins/nonebot_plugin_helldivers_tools/war_renderer.py +++ b/hexi/plugins/nonebot_plugin_helldivers_tools/utils/war_renderer.py @@ -11,10 +11,10 @@ require("nonebot_plugin_htmlrender") from nonebot_plugin_htmlrender import get_new_page # noqa: E402 -basic_path = Path(__file__).resolve().parent -img_path = basic_path / "img" +basic_path = Path(__file__).resolve().parents[1] +img_path = basic_path / "res" / "img" data_path = basic_path / "data" -template_path = basic_path / "templates" +template_path = basic_path / "res" / "templates" def _rel(p: Path) -> str: diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/web/__init__.py b/hexi/plugins/nonebot_plugin_helldivers_tools/web/__init__.py new file mode 100644 index 0000000..090b196 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_helldivers_tools/web/__init__.py @@ -0,0 +1 @@ +# helldivers_tools —— Web 层。 diff --git a/hexi/plugins/nonebot_plugin_helldivers_tools/stratagem_admin.py b/hexi/plugins/nonebot_plugin_helldivers_tools/web/stratagem_admin.py similarity index 92% rename from hexi/plugins/nonebot_plugin_helldivers_tools/stratagem_admin.py rename to hexi/plugins/nonebot_plugin_helldivers_tools/web/stratagem_admin.py index e4a52a3..460d5a2 100644 --- a/hexi/plugins/nonebot_plugin_helldivers_tools/stratagem_admin.py +++ b/hexi/plugins/nonebot_plugin_helldivers_tools/web/stratagem_admin.py @@ -14,7 +14,7 @@ from fastapi.responses import FileResponse, JSONResponse from hexi.web_auth import require_admin -from .equipment_store import ( +from ..services.equipment_store import ( create_stratagem, delete_stratagem, export_items, @@ -24,9 +24,9 @@ from .equipment_store import ( list_stratagems_page, update_stratagem, ) -from .icon_utils import TYPE_COLORS, save_icon_png, svg_to_png +from ..utils.icon_utils import TYPE_COLORS, save_icon_png, svg_to_png -basic_path = Path(__file__).resolve().parent +basic_path = Path(__file__).resolve().parents[1] def _get_body(request: Request): @@ -86,8 +86,8 @@ def build_admin_app() -> FastAPI | None: @app.get("/img/{path:path}") async def icon_file(path: str): - base = (basic_path / "img").resolve() - target = (basic_path / "img" / path).resolve() + base = (basic_path / "res" / "img").resolve() + target = (basic_path / "res" / "img" / path).resolve() if not target.is_relative_to(base) or not target.exists(): raise HTTPException(status_code=404, detail="图片不存在") return FileResponse(target) diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/__init__.py b/hexi/plugins/nonebot_plugin_huoziyinshua/__init__.py index 64be4b6..fbf0b97 100644 --- a/hexi/plugins/nonebot_plugin_huoziyinshua/__init__.py +++ b/hexi/plugins/nonebot_plugin_huoziyinshua/__init__.py @@ -1,14 +1,13 @@ -import os -import re +"""otto 活字印刷 —— 入口(元数据 + 依赖)。""" -from nonebot import on_startswith, require -from nonebot.adapters.onebot.v11 import MessageEvent +from __future__ import annotations + +from pathlib import Path + +from nonebot import get_driver, require from nonebot.plugin import PluginMetadata require("nonebot_plugin_alconna") -from nonebot_plugin_alconna import UniMessage - -from .HuoZiYinShua.huoZiYinShua import huoZiYinShua __plugin_meta__ = PluginMetadata( name="otto活字印刷", @@ -17,32 +16,40 @@ __plugin_meta__ = PluginMetadata( type="application", ) -self_path = os.path.dirname(__file__) -settings = { - "sourceDirectory": os.path.join(self_path, "HuoZiYinShua", "sources", ""), - "ysddSourceDirectory": os.path.join(self_path, "HuoZiYinShua", "ysddSources", ""), - "dictFile": os.path.join(self_path, "HuoZiYinShua", "dictionary.json"), - "ysddTableFile": os.path.join(self_path, "HuoZiYinShua", "ysddTable.json"), -} +_PLUGIN_ROOT = Path(__file__).resolve().parent +# 生成音频统一落到 hexi/data/temp/otto(与 video_analysis 的临时目录约定一致)。 +# 协议端(NapCat)通常与 bot 后端不在同一台机器,无法直接访问本地文件, +# 所以先落盘再通过 FastAPI 路由以 http URL 提供给 NapCat 下载。 +_TEMP_ROOT = _PLUGIN_ROOT.parent.parent / "data" / "temp" / "otto" -HZYS = huoZiYinShua(settings) - -otto = on_startswith("otto") +_driver = get_driver() -@otto.handle() -async def otto_handle(ev: MessageEvent): - txt = ev.message.extract_plain_text().removeprefix("otto") - pattern_reverse = re.compile(r"-reverse\s*$") +@_driver.on_startup +async def _register_media_route() -> None: + """挂载 /api/otto/{filename},供协议端跨机器下载生成的语音。""" + from fastapi import HTTPException + from fastapi.responses import FileResponse + from nonebot import get_app - if re.search(pattern_reverse, txt): - # 结尾匹配到 -reverse - reverse = True - txt = re.sub(pattern_reverse, "", txt) - txt = ",,," + txt # 加一段空白 - else: - reverse = False - txt = txt + ",,," # 加一段空白 + app = get_app() - b64audio = HZYS.export(txt, inYsddMode=True, reverse=reverse) - await UniMessage.voice(url=f"base64://{b64audio.decode()}").send() + def serve_otto_file(filename: str): + root = _TEMP_ROOT.resolve() + target = (root / filename).resolve() + if root != target.parent and root not in target.parents: + raise HTTPException(status_code=403, detail="Forbidden") + if not target.is_file(): + raise HTTPException(status_code=404, detail="Not Found") + return FileResponse(target, media_type="audio/mpeg") + + if not any(getattr(r, "path", None) == "/api/otto/{filename}" for r in app.routes): + app.add_api_route( + "/api/otto/{filename}", + serve_otto_file, + methods=["GET"], + name="otto_media", + ) + + +from .handlers import otto # noqa: E402,F401 diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/handlers/__init__.py b/hexi/plugins/nonebot_plugin_huoziyinshua/handlers/__init__.py new file mode 100644 index 0000000..08330e2 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_huoziyinshua/handlers/__init__.py @@ -0,0 +1,3 @@ +"""otto 活字印刷 —— Trigger 层。""" + +from .otto import otto # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/handlers/otto.py b/hexi/plugins/nonebot_plugin_huoziyinshua/handlers/otto.py new file mode 100644 index 0000000..ac1463c --- /dev/null +++ b/hexi/plugins/nonebot_plugin_huoziyinshua/handlers/otto.py @@ -0,0 +1,83 @@ +"""otto 活字印刷 —— 触发器(Trigger)层。""" + +from __future__ import annotations + +import asyncio +import base64 +import os +import re +import socket +import time +from pathlib import Path + +from nonebot import get_driver, on_startswith, require +from nonebot.adapters.onebot.v11 import MessageEvent +from nonebot.plugin import PluginMetadata +from nonebot_plugin_alconna import UniMessage + +from .. import _TEMP_ROOT +from ..services.synthesis import synthesize + +require("nonebot_plugin_alconna") + +__plugin_meta__ = PluginMetadata( + name="otto活字印刷", + description="鬼畜音源活字印刷(otto语音合成)", + usage="otto 一些内容 生成otto语音\notto 一些内容 -reverse 生成并倒放", + type="application", +) + +otto = on_startswith("otto") + + +async def _remove_later(path: Path) -> None: + """发送完成后延迟清理临时音频,避免 NapCat 还在下载/转码时被删。""" + await asyncio.sleep(300) + path.unlink(missing_ok=True) + + +def _public_base() -> str: + """构造对外可达的 bot HTTP 地址,供协议端跨机器下载音频。 + + 优先读 .env 的 OTTO_PUBLIC_BASE_URL(例如 http://192.168.2.100:39697 + 或公网地址);未配置时回退为 HOST:PORT,且 0.0.0.0 自动替换成本机可路由 IP。 + """ + base = os.getenv("OTTO_PUBLIC_BASE_URL", "").strip().rstrip("/") + if base: + return base + cfg = get_driver().config + host = str(getattr(cfg, "host", None) or os.getenv("HOST", "0.0.0.0")) + port = str(getattr(cfg, "port", None) or os.getenv("PORT", "39697")) + if host in ("0.0.0.0", "::", ""): + try: + # 用 UDP connect 探测本机对外(路由) IP,不真正发包 + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + s.connect(("8.8.8.8", 80)) + host = s.getsockname()[0] + s.close() + except OSError: + host = "127.0.0.1" + return f"http://{host}:{port}" + + +@otto.handle() +async def otto_handle(ev: MessageEvent): + txt = ev.message.extract_plain_text().removeprefix("otto") + pattern_reverse = re.compile(r"-reverse\s*$") + if re.search(pattern_reverse, txt): + reverse = True + txt = re.sub(pattern_reverse, "", txt) + txt = ",,," + txt + else: + reverse = False + txt = txt + ",,," + b64audio = await synthesize(txt, reverse) + audio_bytes = base64.b64decode(b64audio) + _TEMP_ROOT.mkdir(parents=True, exist_ok=True) + mp3_path = _TEMP_ROOT / f"otto-{time.time_ns()}.mp3" + mp3_path.write_bytes(audio_bytes) + url = f"{_public_base()}/api/otto/{mp3_path.name}" + try: + await UniMessage.voice(url=url).send() + finally: + asyncio.create_task(_remove_later(mp3_path)) diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/dictionary.json b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/dictionary.json similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/dictionary.json rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/dictionary.json diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/huoZiYinShua.py b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/huoZiYinShua.py similarity index 96% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/huoZiYinShua.py rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/huoZiYinShua.py index fcf5327..8dacd2c 100644 --- a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/huoZiYinShua.py +++ b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/huoZiYinShua.py @@ -11,7 +11,7 @@ from pathlib import Path from io import BytesIO import base64 - +from nonebot.log import logger #-------------------------------------------- @@ -69,7 +69,7 @@ def _modifyPitchAndSpeed(data, pitchMultiple, speedMultiple): return data elif (pitchMultiple > 2 or speedMultiple < 0.5): - print("过于极端的音调和速度参数可能导致输出结果与预期不符,故不作改动") + logger.warning("过于极端的音调和速度参数可能导致输出结果与预期不符,故不作改动") return data else: @@ -120,7 +120,7 @@ class huoZiYinShua: except Exception as e: self.__configSucceed = False - print(e) + logger.warning(e) @@ -207,7 +207,7 @@ class huoZiYinShua: #如果出现错误 except Exception as e: if word != ",": - print(e) #显示错误信息 + logger.warning(e) #显示错误信息 #加入缺失素材列表 if word not in missingPinyin: missingPinyin.append(word) @@ -225,7 +225,7 @@ class huoZiYinShua: norm))) #如果出现错误 except Exception as e: - print(e) #显示错误信息 + logger.warning(e) #显示错误信息 #加入缺失素材列表 if self.__ysddTable[pronunciations[i][0]] not in missingPinyin: missingPinyin.append(self.__ysddTable[pronunciations[i][0]]) diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/requirements.txt b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/requirements.txt similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/requirements.txt rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/requirements.txt diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/settings.json b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/settings.json similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/settings.json rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/settings.json diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/a.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/a.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/a.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/a.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ai.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ai.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ai.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ai.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/an.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/an.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/an.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/an.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ba.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ba.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ba.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ba.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/bai.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/bai.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/bai.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/bai.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ban.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ban.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ban.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ban.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/bang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/bang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/bang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/bang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/bao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/bao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/bao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/bao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/bei.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/bei.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/bei.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/bei.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ben.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ben.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ben.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ben.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/beng.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/beng.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/beng.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/beng.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/bi.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/bi.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/bi.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/bi.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/bian.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/bian.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/bian.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/bian.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/biao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/biao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/biao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/biao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/bie.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/bie.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/bie.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/bie.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/bin.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/bin.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/bin.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/bin.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/bing.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/bing.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/bing.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/bing.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/bo.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/bo.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/bo.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/bo.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/bu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/bu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/bu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/bu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/cai.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/cai.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/cai.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/cai.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/can.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/can.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/can.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/can.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/cang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/cang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/cang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/cang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/cao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/cao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/cao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/cao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ceng.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ceng.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ceng.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ceng.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/cha.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/cha.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/cha.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/cha.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chai.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chai.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chai.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chai.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/che.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/che.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/che.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/che.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chen.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chen.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chen.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chen.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/cheng.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/cheng.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/cheng.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/cheng.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chi.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chi.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chi.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chi.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chong.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chong.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chong.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chong.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chou.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chou.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chou.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chou.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chuan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chuan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chuan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chuan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chuang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chuang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chuang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chuang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chui.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chui.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chui.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chui.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chun.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chun.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/chun.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/chun.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ci.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ci.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ci.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ci.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/cong.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/cong.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/cong.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/cong.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/cou.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/cou.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/cou.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/cou.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/cu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/cu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/cu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/cu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/cui.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/cui.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/cui.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/cui.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/cun.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/cun.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/cun.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/cun.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/cuo.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/cuo.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/cuo.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/cuo.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/da.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/da.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/da.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/da.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/dai.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/dai.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/dai.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/dai.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/dan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/dan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/dan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/dan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/dang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/dang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/dang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/dang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/dao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/dao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/dao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/dao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/de.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/de.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/de.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/de.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/deng.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/deng.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/deng.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/deng.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/di.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/di.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/di.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/di.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/dian.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/dian.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/dian.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/dian.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/diao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/diao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/diao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/diao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/die.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/die.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/die.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/die.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ding.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ding.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ding.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ding.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/dong.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/dong.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/dong.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/dong.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/dou.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/dou.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/dou.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/dou.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/du.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/du.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/du.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/du.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/duan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/duan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/duan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/duan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/dui.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/dui.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/dui.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/dui.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/dun.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/dun.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/dun.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/dun.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/duo.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/duo.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/duo.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/duo.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/e.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/e.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/e.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/e.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ei.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ei.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ei.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ei.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/en.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/en.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/en.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/en.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/eng.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/eng.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/eng.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/eng.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/er.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/er.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/er.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/er.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/fa.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/fa.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/fa.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/fa.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/fan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/fan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/fan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/fan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/fang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/fang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/fang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/fang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/fei.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/fei.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/fei.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/fei.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/fen.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/fen.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/fen.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/fen.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/feng.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/feng.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/feng.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/feng.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/fou.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/fou.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/fou.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/fou.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/fu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/fu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/fu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/fu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ga.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ga.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ga.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ga.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gai.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gai.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gai.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gai.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ge.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ge.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ge.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ge.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gei.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gei.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gei.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gei.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gen.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gen.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gen.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gen.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/geng.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/geng.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/geng.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/geng.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gong.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gong.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gong.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gong.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gou.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gou.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gou.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gou.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gua.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gua.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gua.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gua.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/guai.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/guai.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/guai.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/guai.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/guan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/guan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/guan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/guan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/guang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/guang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/guang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/guang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gui.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gui.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gui.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gui.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gun.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gun.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/gun.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/gun.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/guo.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/guo.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/guo.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/guo.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ha.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ha.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ha.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ha.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/hai.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/hai.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/hai.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/hai.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/han.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/han.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/han.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/han.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/hao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/hao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/hao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/hao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/he.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/he.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/he.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/he.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/hei.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/hei.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/hei.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/hei.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/hen.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/hen.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/hen.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/hen.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/heng.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/heng.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/heng.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/heng.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/hong.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/hong.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/hong.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/hong.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/hou.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/hou.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/hou.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/hou.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/hu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/hu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/hu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/hu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/hua.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/hua.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/hua.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/hua.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/huai.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/huai.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/huai.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/huai.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/huan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/huan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/huan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/huan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/huang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/huang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/huang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/huang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/hui.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/hui.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/hui.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/hui.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/hun.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/hun.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/hun.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/hun.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/huo.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/huo.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/huo.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/huo.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ji.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ji.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ji.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ji.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/jia.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/jia.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/jia.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/jia.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/jian.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/jian.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/jian.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/jian.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/jiang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/jiang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/jiang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/jiang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/jiao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/jiao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/jiao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/jiao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/jie.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/jie.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/jie.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/jie.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/jin.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/jin.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/jin.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/jin.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/jing.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/jing.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/jing.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/jing.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/jiong.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/jiong.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/jiong.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/jiong.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/jiu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/jiu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/jiu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/jiu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ju.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ju.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ju.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ju.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/juan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/juan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/juan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/juan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/jue.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/jue.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/jue.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/jue.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/jun.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/jun.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/jun.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/jun.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ka.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ka.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ka.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ka.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kai.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kai.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kai.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kai.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ke.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ke.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ke.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ke.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kiu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kiu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kiu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kiu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kong.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kong.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kong.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kong.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kou.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kou.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kou.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kou.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ku.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ku.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ku.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ku.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kua.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kua.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kua.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kua.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kuai.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kuai.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kuai.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kuai.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kuan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kuan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kuan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kuan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kuang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kuang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kuang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kuang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kui.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kui.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kui.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kui.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kun.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kun.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/kun.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/kun.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/la.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/la.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/la.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/la.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lai.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lai.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lai.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lai.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/le.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/le.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/le.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/le.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lei.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lei.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lei.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lei.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/li.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/li.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/li.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/li.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lia.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lia.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lia.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lia.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lian.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lian.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lian.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lian.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/liang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/liang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/liang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/liang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/liao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/liao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/liao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/liao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lie.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lie.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lie.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lie.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lin.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lin.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lin.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lin.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ling.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ling.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ling.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ling.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/liu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/liu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/liu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/liu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/long.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/long.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/long.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/long.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/luan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/luan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/luan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/luan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lun.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lun.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lun.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lun.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/luo.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/luo.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/luo.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/luo.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lv.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lv.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/lv.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/lv.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ma.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ma.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ma.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ma.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/mai.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/mai.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/mai.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/mai.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/man.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/man.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/man.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/man.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/mang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/mang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/mang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/mang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/mao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/mao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/mao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/mao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/me.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/me.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/me.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/me.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/mei.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/mei.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/mei.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/mei.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/men.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/men.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/men.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/men.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/meng.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/meng.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/meng.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/meng.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/mi.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/mi.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/mi.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/mi.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/mian.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/mian.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/mian.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/mian.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/miao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/miao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/miao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/miao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/min.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/min.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/min.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/min.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ming.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ming.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ming.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ming.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/miu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/miu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/miu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/miu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/mo.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/mo.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/mo.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/mo.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/mu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/mu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/mu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/mu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/na.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/na.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/na.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/na.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/nai.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/nai.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/nai.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/nai.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/nan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/nan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/nan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/nan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/nao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/nao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/nao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/nao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ne.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ne.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ne.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ne.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/nei.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/nei.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/nei.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/nei.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/neng.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/neng.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/neng.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/neng.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ni.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ni.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ni.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ni.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/nian.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/nian.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/nian.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/nian.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/niao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/niao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/niao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/niao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ning.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ning.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ning.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ning.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/niu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/niu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/niu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/niu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/nong.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/nong.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/nong.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/nong.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/nu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/nu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/nu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/nu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/nv.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/nv.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/nv.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/nv.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/nve.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/nve.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/nve.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/nve.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/o.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/o.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/o.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/o.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ou.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ou.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ou.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ou.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/pa.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/pa.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/pa.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/pa.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/pai.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/pai.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/pai.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/pai.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/pan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/pan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/pan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/pan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/pao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/pao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/pao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/pao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/pei.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/pei.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/pei.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/pei.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/pen.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/pen.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/pen.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/pen.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/peng.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/peng.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/peng.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/peng.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/pi.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/pi.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/pi.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/pi.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/pian.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/pian.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/pian.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/pian.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/piao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/piao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/piao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/piao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/pin.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/pin.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/pin.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/pin.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ping.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ping.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ping.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ping.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/po.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/po.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/po.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/po.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/pu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/pu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/pu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/pu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/qi.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/qi.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/qi.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/qi.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/qian.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/qian.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/qian.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/qian.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/qiang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/qiang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/qiang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/qiang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/qiao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/qiao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/qiao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/qiao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/qie.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/qie.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/qie.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/qie.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/qin.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/qin.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/qin.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/qin.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/qing.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/qing.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/qing.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/qing.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/qiong.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/qiong.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/qiong.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/qiong.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/qiu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/qiu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/qiu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/qiu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/qu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/qu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/qu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/qu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/quan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/quan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/quan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/quan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/que.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/que.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/que.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/que.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/qun.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/qun.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/qun.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/qun.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ran.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ran.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ran.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ran.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/rang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/rang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/rang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/rang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/rao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/rao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/rao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/rao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/re.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/re.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/re.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/re.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ren.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ren.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ren.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ren.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/reng.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/reng.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/reng.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/reng.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ri.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ri.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ri.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ri.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/rong.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/rong.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/rong.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/rong.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/rou.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/rou.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/rou.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/rou.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ru.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ru.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ru.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ru.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/rui.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/rui.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/rui.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/rui.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ruo.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ruo.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ruo.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ruo.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/sa.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/sa.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/sa.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/sa.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/sai.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/sai.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/sai.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/sai.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/san.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/san.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/san.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/san.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/sang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/sang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/sang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/sang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/sao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/sao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/sao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/sao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/se.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/se.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/se.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/se.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/sha.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/sha.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/sha.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/sha.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/she.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/she.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/she.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/she.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shen.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shen.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shen.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shen.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/sheng.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/sheng.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/sheng.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/sheng.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shi.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shi.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shi.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shi.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shou.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shou.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shou.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shou.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shua.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shua.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shua.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shua.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shuai.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shuai.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shuai.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shuai.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shuang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shuang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shuang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shuang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shui.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shui.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shui.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shui.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shun.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shun.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shun.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shun.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shuo.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shuo.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/shuo.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/shuo.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/si.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/si.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/si.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/si.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/song.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/song.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/song.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/song.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/su.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/su.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/su.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/su.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/suan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/suan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/suan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/suan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/sui.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/sui.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/sui.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/sui.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/sun.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/sun.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/sun.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/sun.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/suo.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/suo.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/suo.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/suo.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ta.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ta.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ta.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ta.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tai.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tai.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tai.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tai.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/teng.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/teng.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/teng.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/teng.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ti.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ti.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ti.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ti.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tian.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tian.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tian.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tian.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tiao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tiao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tiao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tiao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tie.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tie.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tie.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tie.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ting.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ting.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ting.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ting.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tong.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tong.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tong.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tong.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tou.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tou.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tou.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tou.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tuan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tuan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tuan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tuan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tui.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tui.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tui.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tui.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tun.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tun.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tun.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tun.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tuo.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tuo.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/tuo.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/tuo.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/wa.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/wa.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/wa.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/wa.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/wai.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/wai.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/wai.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/wai.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/wan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/wan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/wan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/wan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/wang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/wang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/wang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/wang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/wei.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/wei.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/wei.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/wei.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/wen.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/wen.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/wen.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/wen.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/wo.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/wo.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/wo.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/wo.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/wu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/wu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/wu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/wu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xi.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xi.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xi.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xi.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xia.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xia.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xia.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xia.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xian.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xian.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xian.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xian.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xiang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xiang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xiang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xiang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xiao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xiao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xiao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xiao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xie.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xie.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xie.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xie.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xin.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xin.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xin.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xin.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xing.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xing.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xing.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xing.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xiong.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xiong.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xiong.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xiong.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xiu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xiu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xiu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xiu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xuan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xuan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xuan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xuan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xue.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xue.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xue.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xue.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xun.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xun.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/xun.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/xun.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ya.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ya.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ya.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ya.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/yan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/yan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/yan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/yan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/yang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/yang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/yang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/yang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/yao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/yao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/yao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/yao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ye.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ye.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ye.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ye.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/yi.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/yi.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/yi.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/yi.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/yin.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/yin.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/yin.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/yin.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ying.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ying.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ying.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ying.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/yong.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/yong.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/yong.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/yong.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/you.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/you.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/you.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/you.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/yu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/yu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/yu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/yu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/yuan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/yuan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/yuan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/yuan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/yue.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/yue.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/yue.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/yue.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/yun.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/yun.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/yun.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/yun.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/za.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/za.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/za.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/za.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zai.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zai.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zai.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zai.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ze.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ze.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/ze.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/ze.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zei.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zei.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zei.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zei.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zen.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zen.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zen.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zen.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zeng.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zeng.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zeng.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zeng.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zha.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zha.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zha.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zha.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhe.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhe.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhe.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhe.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhei.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhei.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhei.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhei.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhen.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhen.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhen.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhen.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zheng.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zheng.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zheng.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zheng.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhi.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhi.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhi.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhi.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhong.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhong.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhong.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhong.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhou.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhou.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhou.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhou.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhua.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhua.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhua.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhua.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhuan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhuan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhuan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhuan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhuang.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhuang.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhuang.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhuang.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhui.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhui.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhui.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhui.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhun.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhun.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhun.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhun.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhuo.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhuo.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zhuo.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zhuo.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zi.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zi.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zi.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zi.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zong.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zong.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zong.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zong.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zou.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zou.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zou.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zou.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zuan.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zuan.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zuan.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zuan.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zui.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zui.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zui.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zui.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zun.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zun.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zun.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zun.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zuo.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zuo.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/sources/zuo.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/sources/zuo.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/AQ1.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/AQ1.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/AQ1.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/AQ1.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/AQ2.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/AQ2.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/AQ2.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/AQ2.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/bobi.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/bobi.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/bobi.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/bobi.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/by.mp3 b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/by.mp3 similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/by.mp3 rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/by.mp3 diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/d.mp3 b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/d.mp3 similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/d.mp3 rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/d.mp3 diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/djha.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/djha.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/djha.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/djha.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/euz.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/euz.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/euz.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/euz.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/ga.mp3 b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/ga.mp3 similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/ga.mp3 rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/ga.mp3 diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/gwysmgx.mp3 b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/gwysmgx.mp3 similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/gwysmgx.mp3 rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/gwysmgx.mp3 diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/hlldxf.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/hlldxf.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/hlldxf.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/hlldxf.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/jtlaidian.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/jtlaidian.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/jtlaidian.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/jtlaidian.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/jyxa.mp3 b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/jyxa.mp3 similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/jyxa.mp3 rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/jyxa.mp3 diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/kzzll.mp3 b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/kzzll.mp3 similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/kzzll.mp3 rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/kzzll.mp3 diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/miyu.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/miyu.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/miyu.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/miyu.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/nxhw.mp3 b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/nxhw.mp3 similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/nxhw.mp3 rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/nxhw.mp3 diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/nzmzmca.mp3 b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/nzmzmca.mp3 similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/nzmzmca.mp3 rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/nzmzmca.mp3 diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/omns.mp3 b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/omns.mp3 similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/omns.mp3 rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/omns.mp3 diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/sddl.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/sddl.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/sddl.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/sddl.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/waao.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/waao.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/waao.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/waao.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/wcsndm.mp3 b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/wcsndm.mp3 similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/wcsndm.mp3 rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/wcsndm.mp3 diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/wsdg.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/wsdg.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/wsdg.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/wsdg.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/wssddl.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/wssddl.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/wssddl.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/wssddl.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/wxhn.mp3 b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/wxhn.mp3 similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/wxhn.mp3 rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/wxhn.mp3 diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/xh.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/xh.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/xh.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/xh.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/ydglm.mp3 b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/ydglm.mp3 similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/ydglm.mp3 rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/ydglm.mp3 diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/zaiQ.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/zaiQ.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/zaiQ.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/zaiQ.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/啊1.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/啊1.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/啊1.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/啊1.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/啊2.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/啊2.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/啊2.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/啊2.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/好汉.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/好汉.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/好汉.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/好汉.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/愉悦送走.mp3 b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/愉悦送走.mp3 similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/愉悦送走.mp3 rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/愉悦送走.mp3 diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/欧内的手.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/欧内的手.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/欧内的手.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/欧内的手.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/欧西给1.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/欧西给1.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/欧西给1.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/欧西给1.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/欧西给2.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/欧西给2.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/欧西给2.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/欧西给2.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/欧西给3.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/欧西给3.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/欧西给3.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/欧西给3.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/癌症晚期.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/癌症晚期.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/癌症晚期.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/癌症晚期.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/给你妈.mp3 b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/给你妈.mp3 similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/给你妈.mp3 rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/给你妈.mp3 diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/走位.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/走位.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/走位.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/走位.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/韭菜盒子.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/韭菜盒子.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/韭菜盒子.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/韭菜盒子.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/鬼叫1.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/鬼叫1.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/鬼叫1.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/鬼叫1.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/鬼叫2.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/鬼叫2.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/鬼叫2.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/鬼叫2.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/鬼叫3.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/鬼叫3.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/鬼叫3.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/鬼叫3.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/鬼叫4.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/鬼叫4.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/鬼叫4.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/鬼叫4.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/鬼叫5.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/鬼叫5.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/鬼叫5.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/鬼叫5.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/鬼叫6.wav b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/鬼叫6.wav similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddSources/鬼叫6.wav rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddSources/鬼叫6.wav diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddTable.json b/hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddTable.json similarity index 100% rename from hexi/plugins/nonebot_plugin_huoziyinshua/HuoZiYinShua/ysddTable.json rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/HuoZiYinShua/ysddTable.json diff --git a/hexi/plugins/nonebot_plugin_video_analysis/fetchers/__init__.py b/hexi/plugins/nonebot_plugin_huoziyinshua/res/__init__.py similarity index 100% rename from hexi/plugins/nonebot_plugin_video_analysis/fetchers/__init__.py rename to hexi/plugins/nonebot_plugin_huoziyinshua/res/__init__.py diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/services/__init__.py b/hexi/plugins/nonebot_plugin_huoziyinshua/services/__init__.py new file mode 100644 index 0000000..566addb --- /dev/null +++ b/hexi/plugins/nonebot_plugin_huoziyinshua/services/__init__.py @@ -0,0 +1,3 @@ +"""otto 活字印刷 —— Service 层。""" + +from .synthesis import synthesize # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_huoziyinshua/services/synthesis.py b/hexi/plugins/nonebot_plugin_huoziyinshua/services/synthesis.py new file mode 100644 index 0000000..f36852e --- /dev/null +++ b/hexi/plugins/nonebot_plugin_huoziyinshua/services/synthesis.py @@ -0,0 +1,27 @@ +"""otto 活字印刷 —— 业务逻辑(Service 层)。""" + +from __future__ import annotations + +import asyncio +import os +from pathlib import Path + +from ..res.HuoZiYinShua.huoZiYinShua import huoZiYinShua + +_PLUGIN_ROOT = Path(__file__).resolve().parents[1] + +_settings = { + "sourceDirectory": str(_PLUGIN_ROOT / "res" / "HuoZiYinShua" / "sources") + os.sep, + "ysddSourceDirectory": str(_PLUGIN_ROOT / "res" / "HuoZiYinShua" / "ysddSources") + os.sep, + "dictFile": str(_PLUGIN_ROOT / "res" / "HuoZiYinShua" / "dictionary.json"), + "ysddTableFile": str(_PLUGIN_ROOT / "res" / "HuoZiYinShua" / "ysddTable.json"), +} + +_HZYS = huoZiYinShua(_settings) + + +async def synthesize(txt: str, reverse: bool) -> bytes: + """合成 otto 语音,返回 base64(原声大碟模式);同步调用放入线程避免阻塞事件循环。""" + return await asyncio.to_thread( + _HZYS.export, txt, True, 1, 1, False, reverse + ) diff --git a/hexi/plugins/nonebot_plugin_learning_chat/__init__.py b/hexi/plugins/nonebot_plugin_learning_chat/__init__.py index b862c22..b7e7e07 100644 --- a/hexi/plugins/nonebot_plugin_learning_chat/__init__.py +++ b/hexi/plugins/nonebot_plugin_learning_chat/__init__.py @@ -1,34 +1,14 @@ +"""群聊学习 —— 入口(元数据 + 配置注册 + Web 挂载)。""" + from nonebot import require +from nonebot.plugin import PluginMetadata require("nonebot_plugin_orm") -import asyncio -import random -import time - -from nonebot import on_message, require, logger, get_adapter -from nonebot.adapters.onebot.v11 import ( - GroupMessageEvent, - GROUP, - Message, - ActionFailed, - Adapter, -) -from nonebot.params import Arg -from nonebot.plugin import PluginMetadata -from nonebot.rule import Rule -from nonebot.typing import T_State -from nonebot_plugin_orm import get_session -from sqlalchemy import insert -from .handler import LearningChat -from .models import ChatMessage -from .config import config_manager, NICKNAME -from . import web_api -from . import web_hub -from hexi.web_plugin_registry import register_web_plugin - -require("nonebot_plugin_apscheduler") -from nonebot_plugin_apscheduler import scheduler +from .config import NICKNAME, config_manager, register_config as _register_learning_config # noqa: E402 +from . import web_api # noqa: E402 +from . import web_hub # noqa: E402 +from hexi.web_plugin_registry import register_web_plugin # noqa: E402 # 注册到统一 Web 管理台(/hub):hub 启动时挂载 /api/learning_chat register_web_plugin( @@ -39,6 +19,9 @@ register_web_plugin( module_name=__name__, ) +# 统一配置标准:把顶层 ChatConfig 字段暴露给 /hub 插件配置页 +_register_learning_config() + __plugin_meta__ = PluginMetadata( name="群聊学习", description="学习群友们的发言、复读以及主动发言", @@ -49,89 +32,4 @@ __plugin_meta__ = PluginMetadata( extra={"author": "惜月"}, ) - -async def ChatRule(event: GroupMessageEvent, state: T_State) -> bool: - if answers := await LearningChat(event).answer(): - state["answers"] = answers - return True - return False - - -learning_chat = on_message( - priority=99, - block=False, - rule=Rule(ChatRule), - permission=GROUP, - state={ - "pm_name": "群聊学习", - "pm_description": "(被动技能)bot会学习群友们的发言", - "pm_usage": "群聊学习", - "pm_priority": 1, - }, -) - - -@learning_chat.handle() -async def _(event: GroupMessageEvent, answers=Arg("answers")): - for answer in answers: - try: - logger.info( - "群聊学习", f'{NICKNAME}将向群{event.group_id}回复"{answer}"' - ) - msg = await learning_chat.send(Message(answer)) - async with get_session() as session: - session.add(ChatMessage( - group_id=event.group_id, - user_id=event.self_id, - message_id=msg["message_id"], - message=answer, - raw_message=answer, - time=int(time.time()), - plain_text=Message(answer).extract_plain_text(), - )) - await session.commit() - await asyncio.sleep(random.random() + 0.5) - except ActionFailed: - logger.info( - "群聊学习", - f'{NICKNAME}向群{event.group_id}的回复"{answer}"发送失败,可能处于风控中', - ) - - -@scheduler.scheduled_job("interval", minutes=3, misfire_grace_time=5) -async def speak_up(): - if not config_manager.config.total_enable: - return - try: - bots = get_adapter(Adapter).bots - if len(bots) == 0: - return - bot = list(bots.values())[0] - except ValueError: - return - if not (speak := await LearningChat.speak(int(bot.self_id))): - return - group_id, messages = speak - for msg in messages: - try: - logger.info("群聊学习", f'{NICKNAME}向群{group_id}主动发言"{msg}"') - send_result = await bot.send_group_msg( - group_id=group_id, message=Message(msg) - ) - async with get_session() as session: - session.add(ChatMessage( - group_id=group_id, - user_id=int(bot.self_id), - message_id=send_result["message_id"], - message=msg, - raw_message=msg, - time=int(time.time()), - plain_text=Message(msg).extract_plain_text(), - )) - await session.commit() - await asyncio.sleep(random.randint(2, 4)) - except ActionFailed: - logger.info( - "群聊学习", - f'{NICKNAME}向群{group_id}主动发言"{msg}"发送失败,可能处于风控中', - ) +from .handlers import learning_chat # noqa: E402,F401 diff --git a/hexi/plugins/nonebot_plugin_learning_chat/config.py b/hexi/plugins/nonebot_plugin_learning_chat/config.py index 610f2f9..bcb3020 100644 --- a/hexi/plugins/nonebot_plugin_learning_chat/config.py +++ b/hexi/plugins/nonebot_plugin_learning_chat/config.py @@ -113,3 +113,47 @@ def log_debug(command: str, info: str): def log_info(command: str, info: str): logger.opt(colors=True).info(f"[{command}]{escape_tag(info)}") + +def register_config() -> None: + """把顶层 ChatConfig 顶层字段接入统一 Web 配置标准(/hub 可读可改)。 + + getter/setter 直接读写 config_manager.config,并保存到 learning_chat.yml。 + 权威源是插件自身的 yml,故 nosave 不写入 plugin_config.json(避免与自有后台互相覆盖)。 + """ + from hexi.config_standard import register_config_items + + def _get(key): + return getattr(config_manager.config, key) + + def _set(key, value): + setattr(config_manager.config, key, value) + config_manager.save() + + fields = [ + {"key": "total_enable", "label": "群聊学习总开关", "type": "bool"}, + {"key": "enable_web", "label": "启用后台管理", "type": "bool"}, + {"key": "web_username", "label": "后台管理用户名", "type": "string"}, + {"key": "web_password", "label": "后台管理密码", "type": "password", "secret": True}, + {"key": "web_secret_key", "label": "后台签名密钥", "type": "password", "secret": True}, + {"key": "ban_words", "label": "全局屏蔽词", "type": "text", "item_type": "str"}, + {"key": "ban_users", "label": "全局屏蔽用户", "type": "text", "item_type": "int"}, + {"key": "KEYWORDS_SIZE", "label": "单句关键词分词数量", "type": "int"}, + {"key": "cross_group_threshold", "label": "跨群回复阈值", "type": "int"}, + {"key": "learn_max_count", "label": "最高学习次数", "type": "int"}, + {"key": "dictionary", "label": "自定义词典", "type": "text", "item_type": "str"}, + ] + items = [] + for f in fields: + items.append( + { + **f, + "getter": lambda key=f["key"]: _get(key), + "setter": lambda value, key=f["key"]: _set(key, value), + } + ) + register_config_items( + __package__, + items, + apply_extra=lambda _values, _store: config_manager.save(), + ) + diff --git a/hexi/plugins/nonebot_plugin_learning_chat/handlers/__init__.py b/hexi/plugins/nonebot_plugin_learning_chat/handlers/__init__.py new file mode 100644 index 0000000..07cfea8 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_learning_chat/handlers/__init__.py @@ -0,0 +1,3 @@ +"""群聊学习 —— Trigger 层。""" + +from .learn import learning_chat # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_learning_chat/handlers/learn.py b/hexi/plugins/nonebot_plugin_learning_chat/handlers/learn.py new file mode 100644 index 0000000..507e307 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_learning_chat/handlers/learn.py @@ -0,0 +1,116 @@ +"""群聊学习 —— 触发器(Trigger)层。""" + +from __future__ import annotations + +import asyncio +import random +import time + +from nonebot import get_adapter, logger, on_message, require +from nonebot.adapters.onebot.v11 import ( + GROUP, + ActionFailed, + Adapter, + GroupMessageEvent, + Message, +) +from nonebot.params import Arg +from nonebot.rule import Rule +from nonebot.typing import T_State + +require("nonebot_plugin_orm") +require("nonebot_plugin_apscheduler") +from nonebot_plugin_apscheduler import scheduler + +from nonebot_plugin_orm import get_session + +from ..config import NICKNAME, config_manager +from ..models import ChatMessage +from ..services.learn import LearningChat + + +async def ChatRule(event: GroupMessageEvent, state: T_State) -> bool: + if answers := await LearningChat(event).answer(): + state["answers"] = answers + return True + return False + + +learning_chat = on_message( + priority=99, + block=False, + rule=Rule(ChatRule), + permission=GROUP, + state={ + "pm_name": "群聊学习", + "pm_description": "(被动技能)bot会学习群友们的发言", + "pm_usage": "群聊学习", + "pm_priority": 1, + }, +) + + +@learning_chat.handle() +async def _(event: GroupMessageEvent, answers=Arg("answers")): + for answer in answers: + try: + logger.info( + "群聊学习", f'{NICKNAME}将向群{event.group_id}回复"{answer}"' + ) + msg = await learning_chat.send(Message(answer)) + async with get_session() as session: + session.add(ChatMessage( + group_id=event.group_id, + user_id=event.self_id, + message_id=msg["message_id"], + message=answer, + raw_message=answer, + time=int(time.time()), + plain_text=Message(answer).extract_plain_text(), + )) + await session.commit() + await asyncio.sleep(random.random() + 0.5) + except ActionFailed: + logger.info( + "群聊学习", + f'{NICKNAME}向群{event.group_id}的回复"{answer}"发送失败,可能处于风控中', + ) + + +@scheduler.scheduled_job("interval", minutes=3, misfire_grace_time=5) +async def speak_up(): + if not config_manager.config.total_enable: + return + try: + bots = get_adapter(Adapter).bots + if len(bots) == 0: + return + bot = list(bots.values())[0] + except ValueError: + return + if not (speak := await LearningChat.speak(int(bot.self_id))): + return + group_id, messages = speak + for msg in messages: + try: + logger.info("群聊学习", f'{NICKNAME}向群{group_id}主动发言"{msg}"') + send_result = await bot.send_group_msg( + group_id=group_id, message=Message(msg) + ) + async with get_session() as session: + session.add(ChatMessage( + group_id=group_id, + user_id=int(bot.self_id), + message_id=send_result["message_id"], + message=msg, + raw_message=msg, + time=int(time.time()), + plain_text=Message(msg).extract_plain_text(), + )) + await session.commit() + await asyncio.sleep(random.randint(2, 4)) + except ActionFailed: + logger.info( + "群聊学习", + f'{NICKNAME}向群{group_id}主动发言"{msg}"发送失败,可能处于风控中', + ) diff --git a/hexi/plugins/nonebot_plugin_learning_chat/services/__init__.py b/hexi/plugins/nonebot_plugin_learning_chat/services/__init__.py new file mode 100644 index 0000000..c9e08b5 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_learning_chat/services/__init__.py @@ -0,0 +1,3 @@ +"""群聊学习 —— Service 层。""" + +from .learn import LearningChat # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_learning_chat/handler.py b/hexi/plugins/nonebot_plugin_learning_chat/services/learn.py similarity index 99% rename from hexi/plugins/nonebot_plugin_learning_chat/handler.py rename to hexi/plugins/nonebot_plugin_learning_chat/services/learn.py index e88d46b..7c38d10 100644 --- a/hexi/plugins/nonebot_plugin_learning_chat/handler.py +++ b/hexi/plugins/nonebot_plugin_learning_chat/services/learn.py @@ -18,8 +18,8 @@ from nonebot import get_adapter from nonebot.adapters.onebot.v11 import GroupMessageEvent, MessageSegment, ActionFailed, Adapter from sqlalchemy import select, delete, func from nonebot_plugin_orm import get_session -from .models import ChatBlackList, ChatContext, ChatAnswer, ChatMessage -from .config import ( +from ..models import ChatBlackList, ChatContext, ChatAnswer, ChatMessage +from ..config import ( config_manager, SUPERUSERS, NICKNAME, diff --git a/hexi/plugins/nonebot_plugin_learning_chat/web_api.py b/hexi/plugins/nonebot_plugin_learning_chat/web_api.py index ae2ef1f..d3cc8cf 100644 --- a/hexi/plugins/nonebot_plugin_learning_chat/web_api.py +++ b/hexi/plugins/nonebot_plugin_learning_chat/web_api.py @@ -16,7 +16,7 @@ except ImportError: import jieba from nonebot_plugin_orm import get_session -from .handler import LearningChat +from .services.learn import LearningChat from .models import ChatMessage, ChatContext, ChatAnswer, ChatBlackList from .config import config_manager, driver from .web_frontend import ensure_frontend_ready, mount_frontend diff --git a/hexi/plugins/nonebot_plugin_learning_chat/web_hub.py b/hexi/plugins/nonebot_plugin_learning_chat/web_hub.py index 9d14348..d93e58c 100644 --- a/hexi/plugins/nonebot_plugin_learning_chat/web_hub.py +++ b/hexi/plugins/nonebot_plugin_learning_chat/web_hub.py @@ -24,7 +24,7 @@ from nonebot_plugin_orm import get_session from hexi.web_auth import require_admin -from .handler import LearningChat +from .services.learn import LearningChat from .models import ChatMessage, ChatContext, ChatAnswer, ChatBlackList from .config import config_manager diff --git a/hexi/plugins/nonebot_plugin_makeaquote/Reply.py b/hexi/plugins/nonebot_plugin_makeaquote/Reply.py deleted file mode 100644 index 03f4230..0000000 --- a/hexi/plugins/nonebot_plugin_makeaquote/Reply.py +++ /dev/null @@ -1,50 +0,0 @@ -from nonebot.adapters.onebot.v11 import Bot, Message -from nonebot import logger - - -class Reply: - def __init__(self): - self.message: str = '' - self.user_id: int = -1 - self.user_card: str = '' - self.time: int = -1 - - -async def extract_reply(event, bot: Bot) -> Reply: - """ - 提取回复内容 - """ - logger.info(event['group_id']) - reply_data = Reply() - if event['reply'] and event['reply']['message_id']: # 待优化 - reply = event['reply'] - sender = reply['sender'] - mes: Message = reply['message'] - print(mes) - msg = mes[0]['data']['text'] - if msg: - reply_data.message = msg - meminfo = await get_member_info(bot=bot, user_id=sender['user_id'], group_id=event['group_id']) - reply_data.user_card = (meminfo["card"] or meminfo["nickname"]) - reply_data.time = reply['time'] - reply_data.user_id = reply['sender']['user_id'] - else: - reply_data.message = -1 - else: - mes: Message = event["message"] - print(mes) - msg = mes[0]['data']['text'].replace("maq","") - if msg: - reply_data.message = msg - meminfo = await get_member_info(bot=bot, user_id=event['user_id'], group_id=event['group_id']) - reply_data.user_card = (meminfo["card"] or meminfo["nickname"]) - reply_data.time = event['time'] - reply_data.user_id = event['user_id'] - else: - reply_data.message = -1 - return reply_data - - -async def get_member_info(bot: Bot, group_id: int, user_id: int): - member_info = await bot.get_group_member_info(group_id=group_id, user_id=user_id) - return member_info diff --git a/hexi/plugins/nonebot_plugin_makeaquote/__init__.py b/hexi/plugins/nonebot_plugin_makeaquote/__init__.py index 2b111cb..457162e 100644 --- a/hexi/plugins/nonebot_plugin_makeaquote/__init__.py +++ b/hexi/plugins/nonebot_plugin_makeaquote/__init__.py @@ -1,13 +1,9 @@ -from nonebot import logger, on_message, require +"""语录 —— 入口(元数据 + 依赖)。""" + +from nonebot import require +from nonebot.plugin import PluginMetadata require("nonebot_plugin_alconna") -from nonebot_plugin_alconna import UniMessage -from nonebot.adapters.onebot.v11 import Bot, Event -from nonebot.plugin import PluginMetadata -from nonebot.rule import keyword - -from .Reply import extract_reply -from .make_a_qoute import generate __plugin_meta__ = PluginMetadata( name="语录", @@ -16,21 +12,4 @@ __plugin_meta__ = PluginMetadata( type="application", ) -maq = on_message(keyword("maq")) - - -@maq.handle() -async def maq_handle(bot: Bot, ev: Event): - event = ev.dict() - try: - if event.get("message_type") != "group": - return - reply = await extract_reply(event, bot) - if reply.message == -1: - await maq.finish("请引用文字消息") - logger.info(f"{reply.user_id}, {reply.user_card}, {reply.message}") - image = await generate(reply) - await UniMessage.image(raw=image.getvalue()).send() - except (KeyError, TypeError) as e: - logger.error(e) - await maq.finish(str(e)) +from .handlers import maq # noqa: E402,F401 diff --git a/hexi/plugins/nonebot_plugin_makeaquote/handlers/__init__.py b/hexi/plugins/nonebot_plugin_makeaquote/handlers/__init__.py new file mode 100644 index 0000000..92a91cb --- /dev/null +++ b/hexi/plugins/nonebot_plugin_makeaquote/handlers/__init__.py @@ -0,0 +1,3 @@ +"""语录 —— Trigger 层。""" + +from .quote import maq # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_makeaquote/handlers/quote.py b/hexi/plugins/nonebot_plugin_makeaquote/handlers/quote.py new file mode 100644 index 0000000..16ab087 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_makeaquote/handlers/quote.py @@ -0,0 +1,32 @@ +"""语录 —— 触发器(Trigger)层。""" + +from __future__ import annotations + +from nonebot import logger, on_message, require +from nonebot.adapters.onebot.v11 import Bot, Event +from nonebot.rule import keyword +from nonebot_plugin_alconna import UniMessage + +from ..services.generate import generate +from ..utils.reply import extract_reply + +require("nonebot_plugin_alconna") + +maq = on_message(keyword("maq")) + + +@maq.handle() +async def maq_handle(bot: Bot, ev: Event): + event = ev.dict() + try: + if event.get("message_type") != "group": + return + reply = await extract_reply(event, bot) + if reply.message == -1: + await maq.finish("请引用文字消息") + logger.info(f"{reply.user_id}, {reply.user_card}, {reply.message}") + image = await generate(reply) + await UniMessage.image(raw=image.getvalue()).send() + except (KeyError, TypeError) as e: + logger.error(e) + await maq.finish(str(e)) diff --git a/hexi/plugins/nonebot_plugin_makeaquote/data/font/SourceHanSansCN-Bold.otf b/hexi/plugins/nonebot_plugin_makeaquote/res/font/SourceHanSansCN-Bold.otf similarity index 100% rename from hexi/plugins/nonebot_plugin_makeaquote/data/font/SourceHanSansCN-Bold.otf rename to hexi/plugins/nonebot_plugin_makeaquote/res/font/SourceHanSansCN-Bold.otf diff --git a/hexi/plugins/nonebot_plugin_makeaquote/data/font/SourceHanSansCN-Medium.otf b/hexi/plugins/nonebot_plugin_makeaquote/res/font/SourceHanSansCN-Medium.otf similarity index 100% rename from hexi/plugins/nonebot_plugin_makeaquote/data/font/SourceHanSansCN-Medium.otf rename to hexi/plugins/nonebot_plugin_makeaquote/res/font/SourceHanSansCN-Medium.otf diff --git a/hexi/plugins/nonebot_plugin_makeaquote/services/__init__.py b/hexi/plugins/nonebot_plugin_makeaquote/services/__init__.py new file mode 100644 index 0000000..5c6f81e --- /dev/null +++ b/hexi/plugins/nonebot_plugin_makeaquote/services/__init__.py @@ -0,0 +1,3 @@ +"""语录 —— Service 层。""" + +from .generate import generate # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_makeaquote/make_a_qoute.py b/hexi/plugins/nonebot_plugin_makeaquote/services/generate.py similarity index 76% rename from hexi/plugins/nonebot_plugin_makeaquote/make_a_qoute.py rename to hexi/plugins/nonebot_plugin_makeaquote/services/generate.py index 7857087..9bf05bc 100644 --- a/hexi/plugins/nonebot_plugin_makeaquote/make_a_qoute.py +++ b/hexi/plugins/nonebot_plugin_makeaquote/services/generate.py @@ -1,3 +1,7 @@ +"""语录 —— 图片生成(Service 层)。""" + +from __future__ import annotations + import hashlib from io import BytesIO from pathlib import Path @@ -11,16 +15,15 @@ from PIL import Image, ImageDraw, ImageFont from pilmoji import Pilmoji from pilmoji.source import TwemojiEmojiSource -from .Reply import Reply +from ..utils.reply import Reply -# --- 常量 --- -_FONT_DIR = Path(__file__).resolve().parent / "data" / "font" -FONT_SMALL = 24 # 用户卡片 / 时间 -FONT_TIME = 18 # 时间 -FONT_TEXT_MAX = 32 # 正文最大字号 -FONT_TEXT_MIN = 12 # 正文最小字号(低于此则截断) +# 字体资源在插件 res/font 下 +_FONT_DIR = Path(__file__).resolve().parents[1] / "res" / "font" +FONT_SMALL = 24 +FONT_TIME = 18 +FONT_TEXT_MAX = 32 +FONT_TEXT_MIN = 12 -# --- 字体懒加载 --- _font_cache: dict = {} @@ -46,10 +49,6 @@ def _auto_fit( max_width: float, max_height: float, ) -> tuple[list[str], ImageFont.FreeTypeFont, int, int]: - """ - 自动缩放字号使文本适合 max_width × max_height 区域。 - 返回 (行列表, 字体, 字号, 行间距)。 - """ for size in range(FONT_TEXT_MAX, FONT_TEXT_MIN - 1, -2): font = _get_font("SourceHanSansCN-Medium.otf", size) chars_per_line = max(1, int(max_width / (size * 0.92))) @@ -60,8 +59,6 @@ def _auto_fit( draw.textlength(line, font) <= max_width for line in lines ): return lines, font, size, spacing - - # 最小字号兜底:允许截断 font = _get_font("SourceHanSansCN-Medium.otf", FONT_TEXT_MIN) chars_per_line = max(1, int(max_width / (FONT_TEXT_MIN * 0.92))) lines = wrap_text(text, chars_per_line) @@ -70,87 +67,54 @@ def _auto_fit( async def generate(reply: Reply) -> BytesIO: - """ - 生成图片 — 正文根据长度自动缩放字号,无需截断 - """ - image = Image.new('RGBA', (1280, 640), (0, 0, 0, 255)) + image = Image.new("RGBA", (1280, 640), (0, 0, 0, 255)) draw = ImageDraw.Draw(image) - x_start = 601.1 x_end = 1241.1 - max_width = x_end - x_start # ≈ 640px - max_height = 400 # 为用户卡片留出空间 - - # 自动缩放 + max_width = x_end - x_start + max_height = 400 text_wrapped, text_font, font_size, line_spacing = _auto_fit( reply.message, draw, max_width, max_height, ) - - # 垂直居中 total_h = len(text_wrapped) * (font_size + line_spacing) - line_spacing y_min = 100 - font_size y_max = 512 y = int((y_max - y_min) / 2 - total_h / 2) - - # --- Pilmoji --- with Pilmoji(image, source=TwemojiEmojiSource, emoji_position_offset=(0, 10)) as emoji: for line in text_wrapped: text_size = draw.textlength(line, text_font) x = int(x_start + (max_width - text_size) / 2) emoji.text((x, y), line, font=text_font, fill=(255, 255, 255, 255), embedded_color=True) y += font_size + line_spacing - - # --- 头像 --- img_content = await download_avatar(str(reply.user_id)) avatar = Image.open(img_content).resize((640, 640)) avatar = alpha_gradient(avatar, 320, 640) image.paste(avatar, (0, 0), avatar) - - # --- 用户卡片 --- x_center = 921.1 card_size = draw.textlength("- " + reply.user_card, _font_small()) x_card_start = x_center - card_size / 2 draw.text((x_card_start, y), "- " + reply.user_card, font=_font_small(), fill=(169, 172, 184, 255)) - - # --- 时间 --- fmt_time = strftime("%Y.%m.%d %H:%M", localtime(reply.time)) time_size = draw.textlength(fmt_time, _font_small()) x_time_start = x_end - time_size draw.text((x_time_start, 640 - FONT_SMALL - 20), fmt_time, font=_font_time(), fill=(169, 172, 184, 255)) - - # --- 输出 --- bytes_io = BytesIO() - image.convert('RGB').save(bytes_io, format="JPEG") + image.convert("RGB").save(bytes_io, format="JPEG") return bytes_io def wrap_text(text: str, width: int) -> list[str]: - """ - 按宽度自动换行,支持中日韩文本。 - 先按换行符分行,再用 cjk_textwrap.wrap 按宽度折行。 - """ return [wrapped for line in text.splitlines() for wrapped in cjk_textwrap.wrap(line, width)] def alpha_gradient(image, x_s: int, x_e: int): - """ - 为图像添加从 x_s 到 x_e 的左右渐变透明度遮罩。 - 使用 numpy 加速,避免逐像素 putpixel 的低效操作。 - """ image = image.convert("RGBA") w, h = image.size - - # 默认全不透明 gradient = np.full((h, w), 255, dtype=np.uint8) - - # 生成渐变列 xs = np.linspace(0, 1, x_e - x_s, endpoint=False) alphas = 255 - (np.sin(xs * np.pi - np.pi / 2) / 2 + 0.5) * 255 alphas = alphas.astype(np.uint8) - - # 应用到对应范围 gradient[:, x_s:x_e] = alphas[np.newaxis, :] - mask = Image.fromarray(gradient, mode="L") image.putalpha(mask) return image @@ -166,10 +130,6 @@ async def download_avatar(user_id: str) -> BytesIO: async def download_url(url: str) -> bytes: - """ - 下载指定 URL 内容,带 3 次重试和超时。 - 如果失败,返回空字节串 b""。 - """ async with httpx.AsyncClient(timeout=5.0) as client: for i in range(3): try: diff --git a/hexi/plugins/nonebot_plugin_makeaquote/utils/__init__.py b/hexi/plugins/nonebot_plugin_makeaquote/utils/__init__.py new file mode 100644 index 0000000..a9a506f --- /dev/null +++ b/hexi/plugins/nonebot_plugin_makeaquote/utils/__init__.py @@ -0,0 +1,3 @@ +"""语录 —— 纯工具层。""" + +from .reply import Reply, extract_reply, get_member_info # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_makeaquote/utils/reply.py b/hexi/plugins/nonebot_plugin_makeaquote/utils/reply.py new file mode 100644 index 0000000..00429da --- /dev/null +++ b/hexi/plugins/nonebot_plugin_makeaquote/utils/reply.py @@ -0,0 +1,54 @@ +"""语录 —— 回复提取工具(utils 层)。""" + +from __future__ import annotations + +from nonebot import logger +from nonebot.adapters.onebot.v11 import Bot, Message + + +class Reply: + def __init__(self): + self.message: str = "" + self.user_id: int = -1 + self.user_card: str = "" + self.time: int = -1 + + +async def extract_reply(event, bot: Bot) -> Reply: + """ + 提取回复内容 + """ + logger.info(event["group_id"]) + reply_data = Reply() + if event["reply"] and event["reply"]["message_id"]: # 待优化 + reply = event["reply"] + sender = reply["sender"] + mes: Message = reply["message"] + logger.info(mes) + msg = mes[0]["data"]["text"] + if msg: + reply_data.message = msg + meminfo = await get_member_info(bot=bot, user_id=sender["user_id"], group_id=event["group_id"]) + reply_data.user_card = meminfo["card"] or meminfo["nickname"] + reply_data.time = reply["time"] + reply_data.user_id = reply["sender"]["user_id"] + else: + reply_data.message = -1 + else: + mes: Message = event["message"] + logger.info(mes) + msg = mes[0]["data"]["text"].replace("maq", "") + if msg: + reply_data.message = msg + meminfo = await get_member_info(bot=bot, user_id=event["user_id"], group_id=event["group_id"]) + reply_data.user_card = meminfo["card"] or meminfo["nickname"] + reply_data.time = event["time"] + reply_data.user_id = event["user_id"] + else: + reply_data.message = -1 + return reply_data + + +async def get_member_info(bot: Bot, group_id: int, user_id: int): + member_info = await bot.get_group_member_info(group_id=group_id, user_id=user_id) + return member_info diff --git a/hexi/plugins/nonebot_plugin_mc_server_status/__init__.py b/hexi/plugins/nonebot_plugin_mc_server_status/__init__.py index e101ed9..10faac8 100644 --- a/hexi/plugins/nonebot_plugin_mc_server_status/__init__.py +++ b/hexi/plugins/nonebot_plugin_mc_server_status/__init__.py @@ -1,26 +1,8 @@ -import ast -from asyncio import gather -from base64 import b64decode -from io import BytesIO -from re import findall -from typing import Union -import json -from mcstatus import BedrockServer, JavaServer -from nonebot import on_command, on_regex -from nonebot.adapters.onebot.v11 import ( - Bot, - GroupMessageEvent, - Message, - MessageEvent, -) -from nonebot.adapters.onebot.v11 import ( - MessageSegment as MS, -) -from nonebot.log import logger -from nonebot.params import RegexGroup +"""MC 服务器信息查询插件 —— 入口(元数据 + 配置注册)。""" + from nonebot.plugin import PluginMetadata -from .config import Config, pc, save_file, var +from .config import Config, pc, save_file # noqa: E402,F401 # 统一配置标准:把管理 QQ / 机器人 QQ / 数据文件名暴露给 Web 管理台 from hexi.config_standard import register_model_config # noqa: E402 @@ -48,7 +30,7 @@ __plugin_meta__ = PluginMetadata( homepage="https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_setu_customization", supported_adapters={"~onebot.v11"}, config=Config, - usage=f"""插件命令如下: + usage="""插件命令如下: 信息 # 字面意思,需要加命令前缀,默认/ 信息数据 # 查看已启用群以及服务器信息,需要加命令前缀,默认/ 添加服务器 # 字面意思 @@ -56,189 +38,4 @@ __plugin_meta__ = PluginMetadata( """, ) - -async def group_check(event: GroupMessageEvent, bot: Bot) -> bool: - return event.group_id in var.group_list and bot == var.handle_bot - - -async def admin_check(event: MessageEvent, bot: Bot) -> bool: - return bot == var.handle_bot and event.user_id in pc.mc_status_admin_qqnum - - -xinxi = on_command("信息", rule=group_check) -list_all = on_command("信息数据", rule=admin_check) -add_server = on_regex( - r"^添加服务器\s*((\d+)\s+(\S+)\s+(\S+)\s+(\S+))?", rule=admin_check -) -del_server = on_regex(r"^删除服务器\s*((\d+)\s+(\S+))?", rule=admin_check) -test_server = on_regex(r"^测试服务器\s*((\S+)\s+(\S+))?", rule=admin_check) - - -@xinxi.handle() -async def _(event: GroupMessageEvent): - group = event.group_id - task_list = [] - for server_name in var.group_list[group]: - server_host = var.group_list[group][server_name][0] - server_type = var.group_list[group][server_name][1] - task_list.append( - check_mc_status( - server_name, - server_host, - server_type, - ) - ) - result = await gather(*task_list) - count = 0 - msg = "" - print(result) - for r in result: - count += 1 - if count > 1: - msg += "\n=== 分割线 ===\n" - msg += r - await xinxi.finish(msg) - - -@add_server.handle() -async def _(mp=RegexGroup()): - if not mp[0]: - await add_server.finish( - f"添加服务器 [群号] [名称] [服务器地址] [类型]\n类型写js或bds,js是Java服务器,bds是基岩服务器\n服务器地址如果知道端口号把端口加上,否则查询速度会慢一点\n添加例子:\nexp1: 添加服务器 114514 哈皮咳嗽 mc.hypixel.net js\nexp2: 添加服务器 114514 某基岩服 mc.bds.net bds\nexp3: 添加服务器 114514 某Java服 mc.java.net:25577 js" - ) - else: - group = int(mp[1]) - new_server_name = mp[2] - server_host = mp[3] - server_type = mp[4].lower() - - if server_type not in ["js", "bds"]: - await add_server.finish("类型请填js或bds") - - if group not in var.group_list: - var.group_list[group] = {new_server_name: [server_host, server_type]} - else: - for server_name in var.group_list[group]: - if new_server_name == server_name: - await add_server.finish("有同名服务器啦!") - var.group_list[group][new_server_name] = [server_host, server_type] - save_file() - await add_server.finish("添加成功") - - -@del_server.handle() -async def _(mp=RegexGroup()): - if not mp[0]: - await del_server.finish(f"删除服务器 [群号] [名称]") - else: - group = int(mp[1]) - name = mp[2] - - if group not in var.group_list: - await del_server.finish("这个群没有添加服务器") - else: - if name in var.group_list[group]: - var.group_list[group].pop(name) - if not var.group_list[group]: - var.group_list.pop(group) - save_file() - await del_server.finish("删除成功") - else: - await del_server.finish("没找到该名称的服务器") - - -@list_all.handle() -async def _(): - msg = "" - for group_id in var.group_list: - msg += f"群{group_id}服务器列表\n" - for server_name in var.group_list[group_id]: - server_host, server_type = var.group_list[group_id][server_name] - msg += f"{server_name} {server_host} {server_type}\n" - msg += "\n" - if not msg: - msg = "无数据" - await list_all.finish(f"mc_status数据\n{msg}") - - -@test_server.handle() -async def _(mp=RegexGroup()): - if not mp[0]: - await test_server.finish( - f"测试服务器 [服务器地址] [类型]\n类型写js或bds,js是Java服务器,bds是基岩服务器" - ) - else: - server_host = mp[1] - server_type = mp[2].lower() - - if server_type not in ["js", "bds"]: - await add_server.finish("类型请填js或bds") - - msg = await check_mc_status("测试", server_host, server_type) - await list_all.finish(msg) - - -async def check_mc_status( - name: str, host: str, server_type: str -) -> Union[str, Message]: - try: - if server_type == "js": - js = await JavaServer.async_lookup(host, timeout=2) - status = js.status() - # if status.description.strip(): - # print(f"des: {status.description}") - version_list = findall(r"\d+\.\d+(?:\.[\dxX]+)?", status.version.name) - if len(version_list) != 1: - version = f"{version_list[0]}-{version_list[-1]}" - else: - version = version_list[0] - - online = f"{status.players.online}/{status.players.max}" - if status.players.online and status.players.sample: - anonymous_player = 0 - _player_list = [] - for p in status.players.sample: - if p.id == "00000000-0000-0000-0000-000000000000": - anonymous_player += 1 - else: - _player_list.append(p.name) - - if anonymous_player: - _player_list.append(f"[{anonymous_player}个匿名玩家]") - - if _player_list: - player_list = "\n".join(_player_list) - - else: - player_list = "没返回玩家列表" - - else: - player_list = "没人在线" - - latency = round(status.latency) - # base64图标 - if status.favicon: - aa, bb = status.favicon.split("base64,") - icon = MS.image(BytesIO(b64decode(bb))) + "\n" - else: - icon = "" - msg = ( - icon - + f"名称:{name}\n版本:{version}\n在线:{online}\n延迟:{latency}ms\n在线列表:\n{player_list}" - ) - - else: - if host.find(":") != -1: - host, port = host.split(":") - else: - host, port = host, 19132 - bds = BedrockServer(host=host, port=int(port)) - status = await bds.async_status() - online = f"{status.players_online}/{status.players_max}" - latency = round(status.latency) - version = status.version.version - msg = f"名称:{name} 【{version}】\n在线:{online} 延迟:{latency}ms" - except Exception as e: - msg = f"名称:{name} 查询失败!\n错误:{repr(e)}" - - return msg +from .handlers import add_server, del_server, list_all, test_server, xinxi # noqa: E402,F401 diff --git a/hexi/plugins/nonebot_plugin_mc_server_status/handlers/__init__.py b/hexi/plugins/nonebot_plugin_mc_server_status/handlers/__init__.py new file mode 100644 index 0000000..8f1f6fe --- /dev/null +++ b/hexi/plugins/nonebot_plugin_mc_server_status/handlers/__init__.py @@ -0,0 +1,3 @@ +"""MC 服务器状态 —— Trigger 层。""" + +from .server import add_server, del_server, list_all, test_server, xinxi # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_mc_server_status/handlers/server.py b/hexi/plugins/nonebot_plugin_mc_server_status/handlers/server.py new file mode 100644 index 0000000..a9ba02b --- /dev/null +++ b/hexi/plugins/nonebot_plugin_mc_server_status/handlers/server.py @@ -0,0 +1,137 @@ +"""MC 服务器状态 —— 触发器(Trigger)层。""" + +from __future__ import annotations + +from asyncio import gather + +from nonebot import on_command, on_regex +from nonebot.adapters.onebot.v11 import ( + Bot, + GroupMessageEvent, + MessageEvent, +) +from nonebot.log import logger +from nonebot.params import RegexGroup +from nonebot.plugin import PluginMetadata + +from ..config import pc, save_file, var +from ..services.mc import check_mc_status + +__plugin_meta__ = PluginMetadata( + name="MC服务器信息查询插件", + description="如名", + type="application", + homepage="https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_setu_customization", + supported_adapters={"~onebot.v11"}, + usage="""插件命令如下: + 信息 # 字面意思,需要加命令前缀,默认/ + 信息数据 # 查看已启用群以及服务器信息,需要加命令前缀,默认/ + 添加服务器 # 字面意思 + 删除服务器 # 字面意思 + """, +) + + +async def group_check(event: GroupMessageEvent, bot: Bot) -> bool: + return event.group_id in var.group_list and bot == var.handle_bot + + +async def admin_check(event: MessageEvent, bot: Bot) -> bool: + return bot == var.handle_bot and event.user_id in pc.mc_status_admin_qqnum + + +xinxi = on_command("信息", rule=group_check) +list_all = on_command("信息数据", rule=admin_check) +add_server = on_regex( + r"^添加服务器\s*((\d+)\s+(\S+)\s+(\S+)\s+(\S+))?", rule=admin_check +) +del_server = on_regex(r"^删除服务器\s*((\d+)\s+(\S+))?", rule=admin_check) +test_server = on_regex(r"^测试服务器\s*((\S+)\s+(\S+))?", rule=admin_check) + + +@xinxi.handle() +async def _(event: GroupMessageEvent): + group = event.group_id + task_list = [] + for server_name in var.group_list[group]: + server_host = var.group_list[group][server_name][0] + server_type = var.group_list[group][server_name][1] + task_list.append(check_mc_status(server_name, server_host, server_type)) + result = await gather(*task_list) + count = 0 + msg = "" + logger.info(f"MC 服务器状态结果: {result}") + for r in result: + count += 1 + if count > 1: + msg += "\n=== 分割线 ===\n" + msg += r + await xinxi.finish(msg) + + +@add_server.handle() +async def _(mp=RegexGroup()): + if not mp[0]: + await add_server.finish("添加服务器 [群号] [名称] [服务器地址] [类型]\n类型写js或bds,js是Java服务器,bds是基岩服务器\n服务器地址如果知道端口号把端口加上,否则查询速度会慢一点\n添加例子:\nexp1: 添加服务器 114514 哈皮咳嗽 mc.hypixel.net js\nexp2: 添加服务器 114514 某基岩服 mc.bds.net bds\nexp3: 添加服务器 114514 某Java服 mc.java.net:25577 js") + return + group = int(mp[1]) + new_server_name = mp[2] + server_host = mp[3] + server_type = mp[4].lower() + if server_type not in ["js", "bds"]: + await add_server.finish("类型请填js或bds") + if group not in var.group_list: + var.group_list[group] = {new_server_name: [server_host, server_type]} + else: + for server_name in var.group_list[group]: + if new_server_name == server_name: + await add_server.finish("有同名服务器啦!") + var.group_list[group][new_server_name] = [server_host, server_type] + save_file() + await add_server.finish("添加成功") + + +@del_server.handle() +async def _(mp=RegexGroup()): + if not mp[0]: + await del_server.finish(f"删除服务器 [群号] [名称]") + return + group = int(mp[1]) + name = mp[2] + if group not in var.group_list: + await del_server.finish("这个群没有添加服务器") + if name in var.group_list[group]: + var.group_list[group].pop(name) + if not var.group_list[group]: + var.group_list.pop(group) + save_file() + await del_server.finish("删除成功") + else: + await del_server.finish("没找到该名称的服务器") + + +@list_all.handle() +async def _(): + msg = "" + for group_id in var.group_list: + msg += f"群{group_id}服务器列表\n" + for server_name in var.group_list[group_id]: + server_host, server_type = var.group_list[group_id][server_name] + msg += f"{server_name} {server_host} {server_type}\n" + msg += "\n" + if not msg: + msg = "无数据" + await list_all.finish(f"mc_status数据\n{msg}") + + +@test_server.handle() +async def _(mp=RegexGroup()): + if not mp[0]: + await test_server.finish("测试服务器 [服务器地址] [类型]\n类型写js或bds,js是Java服务器,bds是基岩服务器") + return + server_host = mp[1] + server_type = mp[2].lower() + if server_type not in ["js", "bds"]: + await add_server.finish("类型请填js或bds") + msg = await check_mc_status("测试", server_host, server_type) + await list_all.finish(msg) diff --git a/hexi/plugins/nonebot_plugin_mc_server_status/services/__init__.py b/hexi/plugins/nonebot_plugin_mc_server_status/services/__init__.py new file mode 100644 index 0000000..3890259 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_mc_server_status/services/__init__.py @@ -0,0 +1,3 @@ +"""MC 服务器状态 —— Service 层。""" + +from .mc import check_mc_status # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_mc_server_status/services/mc.py b/hexi/plugins/nonebot_plugin_mc_server_status/services/mc.py new file mode 100644 index 0000000..994e5b9 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_mc_server_status/services/mc.py @@ -0,0 +1,63 @@ +"""MC 服务器状态 —— 业务逻辑(Service 层)。""" + +from __future__ import annotations + +from base64 import b64decode +from io import BytesIO +from re import findall +from typing import Union + +from mcstatus import BedrockServer, JavaServer +from nonebot.adapters.onebot.v11 import Message, MessageSegment as MS + + +async def check_mc_status( + name: str, host: str, server_type: str +) -> Union[str, Message]: + try: + if server_type == "js": + js = await JavaServer.async_lookup(host, timeout=2) + status = js.status() + version_list = findall(r"\d+\.\d+(?:\.[\dxX]+)?", status.version.name) + if len(version_list) != 1: + version = f"{version_list[0]}-{version_list[-1]}" + else: + version = version_list[0] + online = f"{status.players.online}/{status.players.max}" + if status.players.online and status.players.sample: + anonymous_player = 0 + _player_list = [] + for p in status.players.sample: + if p.id == "00000000-0000-0000-0000-000000000000": + anonymous_player += 1 + else: + _player_list.append(p.name) + if anonymous_player: + _player_list.append(f"[{anonymous_player}个匿名玩家]") + player_list = "\n".join(_player_list) if _player_list else "没返回玩家列表" + else: + player_list = "没人在线" + latency = round(status.latency) + if status.favicon: + aa, bb = status.favicon.split("base64,") + icon = MS.image(BytesIO(b64decode(bb))) + "\n" + else: + icon = "" + msg = ( + icon + + f"名称:{name}\n版本:{version}\n在线:{online}\n延迟:{latency}ms\n在线列表:\n{player_list}" + ) + else: + if host.find(":") != -1: + host, port = host.split(":") + else: + host, port = host, 19132 + bds = BedrockServer(host=host, port=int(port)) + status = await bds.async_status() + online = f"{status.players_online}/{status.players_max}" + latency = round(status.latency) + version = status.version.version + msg = f"名称:{name} 【{version}】\n在线:{online} 延迟:{latency}ms" + except Exception as e: + msg = f"名称:{name} 查询失败!\n错误:{repr(e)}" + return msg diff --git a/hexi/plugins/nonebot_plugin_ncm_saying/__init__.py b/hexi/plugins/nonebot_plugin_ncm_saying/__init__.py index f5769d8..701c98a 100644 --- a/hexi/plugins/nonebot_plugin_ncm_saying/__init__.py +++ b/hexi/plugins/nonebot_plugin_ncm_saying/__init__.py @@ -1,14 +1,10 @@ -import httpx -from nonebot import logger, on_command -from nonebot.adapters import Message -from nonebot.matcher import Matcher -from nonebot.params import CommandArg -from nonebot.adapters.onebot.v11 import MessageEvent, Bot, MessageSegment -import re -import json +"""网抑云 —— 入口(元数据 + 依赖 + 配置注册)。""" +from nonebot import require from nonebot.plugin import PluginMetadata +require("nonebot_plugin_alconna") + __plugin_meta__ = PluginMetadata( name="网抑云", description="随机一条网易云热评", @@ -16,30 +12,7 @@ __plugin_meta__ = PluginMetadata( type="application", ) -__help_version__ = '0.1.0' -__help_plugin_name__ = "网抑云" -__usage__ = """一开口就老网抑云了 +from . import config as _config # noqa: E402 +from . import handlers as _handlers # noqa: E402 -指令:/网抑云|网易云热评:随机一条网易云热评""" - -hitokoto_matcher = on_command("网抑云", aliases={"网易云热评", "emo"}) - - -@hitokoto_matcher.handle() -async def hitokoto(event: MessageEvent): - async with httpx.AsyncClient() as client: - response = await client.get("https://v.api.aa1.cn/api/api-wenan-wangyiyunreping/index.php?aa1=text") - if response.is_error: - logger.error("获取网抑云失败") - return - # 提取 JSON 部分 - pattern = r'

(.*?)

' - match = re.search(pattern, response.text) - - if match: - data = match.group(1) - logger.info(f"解析后的数据:{data}") - mes = (MessageSegment.reply(event.message_id), data.split("——")[0]) - await hitokoto_matcher.finish(mes) - else: - logger.warning("未找到 匹配 部分") +_config.register_config() diff --git a/hexi/plugins/nonebot_plugin_ncm_saying/config.py b/hexi/plugins/nonebot_plugin_ncm_saying/config.py new file mode 100644 index 0000000..747b27c --- /dev/null +++ b/hexi/plugins/nonebot_plugin_ncm_saying/config.py @@ -0,0 +1,30 @@ +"""网抑云 —— 配置注册(按《插件配置文件标准》)。 + +把接口地址暴露给 Web 可读可改(来源无关,store=本模块)。 +""" + +from __future__ import annotations + +import sys as _sys + +from hexi.config_standard import register_config_items + +_PLUGIN_ID = __package__ + +APP_NAME = "网抑云" +API_URL = "https://v.api.aa1.cn/api/api-wenan-wangyiyunreping/index.php?aa1=text" + + +def register_config() -> None: + register_config_items( + _PLUGIN_ID, + [ + { + "key": "API_URL", + "label": "网抑云 API 地址", + "type": "string", + "default": API_URL, + }, + ], + store=_sys.modules[__name__], + ) diff --git a/hexi/plugins/nonebot_plugin_ncm_saying/handlers/__init__.py b/hexi/plugins/nonebot_plugin_ncm_saying/handlers/__init__.py new file mode 100644 index 0000000..ef889ca --- /dev/null +++ b/hexi/plugins/nonebot_plugin_ncm_saying/handlers/__init__.py @@ -0,0 +1,3 @@ +"""网抑云 —— Trigger 层。""" + +from .saying import hitokoto_matcher # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_ncm_saying/handlers/saying.py b/hexi/plugins/nonebot_plugin_ncm_saying/handlers/saying.py new file mode 100644 index 0000000..dc17784 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_ncm_saying/handlers/saying.py @@ -0,0 +1,32 @@ +"""网抑云 —— 触发器(Trigger)层。""" + +from __future__ import annotations + +from nonebot import logger, on_command +from nonebot.adapters.onebot.v11 import MessageEvent, MessageSegment + +from ..services.saying import fetch_hitokoto + +__help_version__ = "0.1.0" +__help_plugin_name__ = "网抑云" +__usage__ = """一开口就老网抑云了 + +指令:/网抑云|网易云热评:随机一条网易云热评""" + +hitokoto_matcher = on_command("网抑云", aliases={"网易云热评", "emo"}) + + +@hitokoto_matcher.handle() +async def hitokoto(event: MessageEvent): + try: + data = await fetch_hitokoto() + except Exception as e: # noqa: BLE001 + logger.error(f"网抑云:获取失败: {e}") + await hitokoto_matcher.finish("获取网抑云失败,请稍后再试") + return + if data is None: + await hitokoto_matcher.finish("获取网抑云失败,请稍后再试") + return + logger.info(f"解析后的数据:{data}") + mes = (MessageSegment.reply(event.message_id), data.split("——")[0]) + await hitokoto_matcher.finish(mes) diff --git a/hexi/plugins/nonebot_plugin_ncm_saying/services/__init__.py b/hexi/plugins/nonebot_plugin_ncm_saying/services/__init__.py new file mode 100644 index 0000000..5bdf604 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_ncm_saying/services/__init__.py @@ -0,0 +1,3 @@ +"""网抑云 —— Service 层。""" + +from .saying import fetch_hitokoto # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_ncm_saying/services/saying.py b/hexi/plugins/nonebot_plugin_ncm_saying/services/saying.py new file mode 100644 index 0000000..efeadad --- /dev/null +++ b/hexi/plugins/nonebot_plugin_ncm_saying/services/saying.py @@ -0,0 +1,28 @@ +"""网抑云 —— 业务逻辑(Service 层)。""" + +from __future__ import annotations + +import re + +import httpx + +from .. import config as _cfg + + +async def fetch_hitokoto() -> str | None: + """带超时与重试地拉取网抑云热评文本;多次失败后抛出最后一次异常。""" + last_err: Exception | None = None + for _ in range(3): + try: + async with httpx.AsyncClient(timeout=10.0) as client: + response = await client.get(_cfg.API_URL) + response.raise_for_status() + match = re.search(r"

(.*?)

", response.text) + if match: + return match.group(1) + return None + except Exception as e: # noqa: BLE001 + last_err = e + if last_err: + raise last_err + return None diff --git a/hexi/plugins/nonebot_plugin_picfinder_take/__init__.py b/hexi/plugins/nonebot_plugin_picfinder_take/__init__.py index a0a4077..1a27f22 100644 --- a/hexi/plugins/nonebot_plugin_picfinder_take/__init__.py +++ b/hexi/plugins/nonebot_plugin_picfinder_take/__init__.py @@ -1,31 +1,23 @@ -import re -from asyncio import sleep -from datetime import datetime, timedelta +"""搜图 —— 入口(元数据 + 配置注册)。""" -from nonebot import get_driver, on_message, on_startswith, require -from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent, PrivateMessageEvent -from nonebot.exception import ActionFailed -from nonebot.log import logger +from nonebot import require from nonebot.plugin import PluginMetadata -from nonebot.rule import is_type, to_me require("nonebot_plugin_alconna") -from nonebot_plugin_alconna import UniMessage -from .config import ( - CHAIN_REPLY, - CHECK, - DAILY_LIMIT, - IGNORE_STAMP, - SAUCENAO_KEY, - SEARCH_TIMEOUT, - threshold, +__plugin_meta__ = PluginMetadata( + name="搜图", + description="SauceNAO + ascii2d 二次元搜图", + usage=( + "(xx为bot名称)\n" + "[@bot+图片] 单张/多张搜图\n" + "[xx搜图] 进入批量搜图模式\n" + "[谢谢xx] 退出批量搜图模式" + ), + type="application", ) -from .image import check_screenshot, get_image_data_ascii, get_image_data_sauce # 统一配置标准:把「插件内部常量」也暴露给 Web 管理台(来源无关)。 -# 说明:Web 读取/修改会写入 plugin_config.json 并热更新 config 模块属性; -# 要在运行期立即生效,插件各使用点应改用 get_effective_value 读取(见 docs/plugin-config-standard.md §5b)。 from hexi.config_standard import register_config_items # noqa: E402 from . import config as _cfgmod # noqa: E402 @@ -44,423 +36,4 @@ register_config_items( store=_cfgmod, ) -__plugin_meta__ = PluginMetadata( - name="搜图", - description="SauceNAO + ascii2d 二次元搜图", - usage=( - "(xx为bot名称)\n" - "[@bot+图片] 单张/多张搜图\n" - "[xx搜图] 进入批量搜图模式\n" - "[谢谢xx] 退出批量搜图模式" - ), - type="application", -) - -driver_config = get_driver().config -SUPERUSERS = driver_config.superusers -NICKNAMES = list(driver_config.nickname) if driver_config.nickname else ["竹竹"] -NICKNAME = NICKNAMES[0] - -class DailyNumberLimiter: - """每日次数限制器(按年积日计数)""" - - def __init__(self, max_num): - self.max = max_num - self.today = -1 - self.count = {} - - def check(self, key) -> bool: - day = datetime.now().timetuple().tm_yday - if day != self.today: - self.today = day - self.count.clear() - return self.count.get(key, 0) < self.max - - def get_num(self, key): - return self.count.get(key, 0) - - def increase(self, key, num=1): - self.count[key] = self.count.get(key, 0) + num - - -lmtd = DailyNumberLimiter(DAILY_LIMIT) - - -class PicListener: - def __init__(self): - self.on = {} - self.count = {} - self.limit = {} - self.timeout = {} - - def get_on_off_status(self, gid): - return self.on[gid] if self.on.get(gid) is not None else False - - def turn_on(self, gid, uid): - self.on[gid] = uid - self.timeout[gid] = datetime.now() + timedelta(seconds=SEARCH_TIMEOUT) - self.count[gid] = 0 - self.limit[gid] = DAILY_LIMIT - lmtd.get_num(uid) - - def turn_off(self, gid): - self.on.pop(gid) - self.count.pop(gid) - self.timeout.pop(gid) - self.limit.pop(gid) - - def count_plus(self, gid): - self.count[gid] += 1 - - -pls = PicListener() - -start_finder = on_startswith(("识图", "搜图", "查图", "找图"), rule=to_me()) -picmessage = on_message(rule=is_type(GroupMessageEvent), block=False) -replymessage = on_message(rule=is_type(GroupMessageEvent), block=False) -thanks = on_startswith("谢谢") -pic_private = on_message(rule=is_type(PrivateMessageEvent), block=False) - - -def parse_report(text: str) -> UniMessage: - """将含 [CQ:image,file=...] 的搜索报告字符串转为 UniMessage""" - msg = UniMessage() - parts = re.split(r"(\[CQ:image,[^\]]*\])", text) - for part in parts: - if part.startswith("[CQ:image,"): - m = re.search(r"file=([^,\]]+)", part) - msg += UniMessage.image(url=m.group(1) if m else "") - elif part: - msg += UniMessage.text(part) - return msg - - -def _extract_image(ev) -> tuple[str, str, str | None] | None: - """从消息中提取第一张图片的 (file, url, subType),无图片返回 None""" - for m in ev.message: - if m.type == "image": - return m.data["file"], m.data["url"], m.data.get("subType") - return None - - -@start_finder.handle() -async def start_finder_handle(bot: Bot, ev: GroupMessageEvent): - uid = ev.user_id - gid = ev.group_id - mid = ev.message_id - if str(uid) not in SUPERUSERS: - await UniMessage.text("暂不支持在群聊中使用!").send() - return - ret = _extract_image(ev) - if not ret: - if pls.get_on_off_status(gid): - if uid == pls.on[gid]: - pls.timeout[gid] = datetime.now() + timedelta(seconds=30) - await UniMessage.text( - "您已经在搜图模式下啦!\n如想退出搜图模式请发送“谢谢竹竹”~" - ).send() - await start_finder.finish() - else: - await UniMessage.at(user_id=str(pls.on[gid])).text( - "正在搜图,请耐心等待~" - ).send() - await start_finder.finish() - pls.turn_on(gid, uid) - await UniMessage.text( - f"了解~请发送图片吧!支持批量噢!\n如想退出搜索模式请发送“谢谢{NICKNAME}”" - ).send() - await sleep(30) - ct = 0 - while pls.get_on_off_status(gid): - if datetime.now() < pls.timeout[gid]: - if ct != pls.count[gid]: - ct = pls.count[gid] - pls.timeout[gid] = datetime.now() + timedelta(seconds=60) - else: - temp = pls.on[gid] - if not pls.count[gid]: - await UniMessage.at(user_id=str(temp)).text( - " 由于超时,已为您自动退出搜图模式~\n您本次搜索期间未发送任何图片,请检查是否被吞图~" - ).send() - else: - await UniMessage.at(user_id=str(temp)).text( - f" 由于超时,已为您自动退出搜图模式,以后要记得说“谢谢{NICKNAME}”来退出搜图模式噢~\n您本次搜索共搜索了{pls.count[gid]}张图片~" - ).send() - pls.turn_off(ev.group_id) - break - await sleep(30) - return - file, url, _ = ret - if str(uid) not in SUPERUSERS: - if not lmtd.check(uid): - await UniMessage.text( - f"您今天已经搜过{DAILY_LIMIT}次图了,休息一下明天再来吧~" - ).send(at_sender=True) - return - - if CHECK: - result = await check_screenshot(bot, file, url) - if result: - if result == 1: - await UniMessage.reply(id=str(mid)).text( - "该图似乎是手机截屏,请进行适当裁剪后再尝试搜图~\n*请注意搜索漫画时务必截取一个完整单页进行搜图~" - ).send() - if result == 2: - await UniMessage.reply(id=str(mid)).text( - "该图似乎是长图拼接,请进行适当裁剪后再尝试搜图~\n*请注意搜索漫画时务必截取一个完整单页进行搜图~" - ).send() - return - await UniMessage.text("正在搜索,请稍候~").send() - await picfinder(bot, ev, url) - - -@picmessage.handle() -async def picmessage_handle(bot: Bot, ev: GroupMessageEvent): - mid = ev.message_id - atcheck = False - batchcheck = False - for m in ev.message: - if m.type == "at" and int(m.data["qq"]) == ev.self_id: - atcheck = True - if pls.get_on_off_status(ev.group_id): - if int(pls.on[ev.group_id]) == int(ev.user_id): - batchcheck = True - if not (batchcheck or atcheck): - return - uid = ev.user_id - ret = _extract_image(ev) - if not ret: - return - file, url, sbtype = ret - if str(uid) not in SUPERUSERS: - if not lmtd.check(uid): - await UniMessage.text( - f"您今天已经搜过{DAILY_LIMIT}次图了,休息一下明天再来吧~" - ).send(at_sender=True) - if pls.get_on_off_status(ev.group_id): - pls.turn_off(ev.group_id) - return - if pls.get_on_off_status(ev.group_id): - pls.count_plus(ev.group_id) - if pls.count[ev.group_id] > pls.limit[ev.group_id]: - await UniMessage.text( - f"您今天已经搜过{DAILY_LIMIT}次图了,休息一下明天再来吧~" - ).send(at_sender=True) - pls.turn_off(ev.group_id) - return - if sbtype and IGNORE_STAMP: - if sbtype != "0": - await UniMessage.reply(id=str(mid)).text( - "该图为表情,已忽略~如确需搜索请尝试单发搜索或回复搜索~" - ).send() - return - - if CHECK: - result = await check_screenshot(bot, file, url) - if result: - if result == 1: - await UniMessage.reply(id=str(mid)).text( - "该图似乎是手机截屏,请手动进行适当裁剪后再尝试搜图~\n*请注意搜索漫画时务必截取一个完整单页进行搜图~" - ).send() - if result == 2: - await UniMessage.reply(id=str(mid)).text( - "该图似乎是长图拼接,请手动进行适当裁剪后再尝试搜图~\n*请注意搜索漫画时务必截取一个完整单页进行搜图~" - ).send() - return - if "c2cpicdw.qpic.cn/offpic_new/" in url: - md5 = file[:-6].upper() - url = f"http://gchat.qpic.cn/gchatpic_new/0/0-0-{md5}/0?term=2" - await UniMessage.text("正在搜索,请稍候~").send() - await picfinder(bot, ev, url) - - -@replymessage.handle() -async def replymessage_handle(bot: Bot, ev: GroupMessageEvent): - mid = ev.message_id - uid = ev.user_id - seg = ev.message[0] - if seg.type != "reply": - return - tmid = seg.data["id"] - cmd = ev.message.extract_plain_text() - flag1 = 0 - flag2 = 0 - for m in ev.message[2:]: - if m.type == "at" and int(m.data["qq"]) == ev.self_id: - flag1 = 1 - for name in NICKNAMES: - if name in cmd: - flag1 = 1 - break - for pfcmd in ["识图", "搜图", "查图", "找图"]: - if pfcmd in cmd: - flag2 = 1 - if not (flag1 and flag2): - return - if str(uid) not in SUPERUSERS: - if not lmtd.check(uid): - await UniMessage.text( - f"您今天已经搜过{DAILY_LIMIT}次图了,休息一下明天再来吧~" - ).send(at_sender=True) - try: - tmsg = await bot.get_msg(message_id=int(tmid)) - except ActionFailed: - await UniMessage.text("该消息已过期,请重新转发~").send() - await replymessage.finish() - ret = re.search(r"\[CQ:image,file=(.*)?,url=(.*)\]", str(tmsg["message"])) - if not ret: - await UniMessage.text("未找到图片~").send() - return - file = ret.group(1) - url = ret.group(2) - - if ",subType=" in url: - url = url.split(",")[0] - elif ",subType=" in file: - file = file.split(",")[0] - - if CHECK: - result = await check_screenshot(bot, file, url) - if result: - if result == 1: - await UniMessage.reply(id=str(mid)).text( - "该图似乎是手机截屏,请手动进行适当裁剪后再尝试搜图~\n*请注意搜索漫画时务必截取一个完整单页进行搜图~" - ).send() - if result == 2: - await UniMessage.reply(id=str(mid)).text( - "该图似乎是长图拼接,请手动进行适当裁剪后再尝试搜图~\n*请注意搜索漫画时务必截取一个完整单页进行搜图~" - ).send() - return - if "c2cpicdw.qpic.cn/offpic_new/" in url: - md5 = file[:-6].upper() - url = f"http://gchat.qpic.cn/gchatpic_new/0/0-0-{md5}/0?term=2" - await UniMessage.text("正在搜索,请稍候~").send() - await picfinder(bot, ev, url) - - -@thanks.handle() -async def thanks_handle(bot: Bot, ev: GroupMessageEvent): - gid = ev.group_id - name = ev.message.extract_plain_text().removeprefix("谢谢").strip() - if name not in NICKNAMES: - return - if pls.get_on_off_status(gid): - if pls.on[gid] != ev.user_id: - await UniMessage.text("不能替别人结束搜图哦~").send() - return - if not pls.count[gid]: - await UniMessage.text("不用谢~\n您本次搜索期间未发送任何图片,请检查是否被吞图~").send() - else: - await UniMessage.text(f"不用谢~\n您本次搜索共搜索了{pls.count[gid]}张图片~").send() - pls.turn_off(gid) - return - await UniMessage.text("にゃ~").send() - - -@pic_private.handle() -async def pic_private_handle(bot: Bot, ev: PrivateMessageEvent): - uid = ev.user_id - ret = _extract_image(ev) - if not ret: - flag1 = flag2 = 0 - for name in NICKNAMES: - if name in str(ev.message): - flag1 = 1 - break - for pfcmd in ["识图", "搜图", "查图", "找图"]: - if pfcmd in str(ev.message): - flag2 = 1 - if flag1 and flag2: - await UniMessage.text("私聊搜图请直接发送图片~").send() - return - file, url, _ = ret - if not lmtd.check(uid): - await UniMessage.text( - f"您今天已经搜过{DAILY_LIMIT}次图了,休息一下明天再来吧~" - ).send() - return - if "c2cpicdw.qpic.cn/offpic_new/" in url: - md5 = file.upper() - logger.info(f"图片URL{url}") - url = f"https://gchat.qpic.cn/gchatpic_new/0/0-0-{md5}/0?term=2" - - await UniMessage.text("正在搜索,请稍候~").send() - result = await get_image_data_sauce(url, SAUCENAO_KEY) - image_data_report = result[0] - simimax = result[1] - if "Index #" in image_data_report: - su = next(iter(SUPERUSERS)) - await bot.send_private_msg(user_id=int(su), message="发生index解析错误") - await bot.send_private_msg(user_id=int(su), message=url) - await bot.send_private_msg(user_id=int(su), message=image_data_report) - await parse_report(image_data_report).send() - - if float(simimax) > float(threshold): - lmtd.increase(uid) - else: - if simimax != 0: - await UniMessage.text("相似度过低,换用ascii2d检索中…").send() - else: - logger.error("SauceNao not found imageInfo") - await UniMessage.text("SauceNao检索失败,换用ascii2d检索中…").send() - - image_data_report = await get_image_data_ascii(url) - if image_data_report[0]: - await parse_report(image_data_report[0]).send() - lmtd.increase(uid) - if image_data_report[1]: - await parse_report(image_data_report[1]).send() - if not (image_data_report[0] or image_data_report[1]): - logger.error("ascii2d not found imageInfo") - await UniMessage.text("ascii2d检索失败…").send() - - -async def chain_reply(bot: Bot, ev: GroupMessageEvent, chain, msg): - if not CHAIN_REPLY: - await parse_report(msg).send() - return chain - data = { - "type": "node", - "data": { - "name": str(NICKNAME) if str(NICKNAME) else "竹竹", - "uin": str(ev.self_id), - "content": str(msg), - }, - } - chain.append(data) - return chain - - -async def picfinder(bot: Bot, ev: GroupMessageEvent, image_data): - uid = ev.user_id - chain = [] - result = await get_image_data_sauce(image_data, SAUCENAO_KEY) - image_data_report = result[0] - simimax = result[1] - if "Index #" in image_data_report: - su = next(iter(SUPERUSERS)) - await bot.send_private_msg(user_id=int(su), message="发生index解析错误") - await bot.send_private_msg(user_id=int(su), message=image_data) - await bot.send_private_msg(user_id=int(su), message=image_data_report) - chain = await chain_reply(bot, ev, chain, image_data_report) - - if float(simimax) > float(threshold): - lmtd.increase(uid) - else: - if simimax != 0: - chain = await chain_reply(bot, ev, chain, "相似度过低,换用ascii2d检索中…") - else: - logger.error("SauceNao not found imageInfo") - chain = await chain_reply(bot, ev, chain, "SauceNao检索失败,换用ascii2d检索中…") - - image_data_report = await get_image_data_ascii(image_data) - if image_data_report[0]: - chain = await chain_reply(bot, ev, chain, image_data_report[0]) - lmtd.increase(uid) - if image_data_report[1]: - chain = await chain_reply(bot, ev, chain, image_data_report[1]) - if not (image_data_report[0] or image_data_report[1]): - logger.error("ascii2d not found imageInfo") - chain = await chain_reply(bot, ev, chain, "ascii2d检索失败…") - - if CHAIN_REPLY: - await bot.send_group_forward_msg(group_id=ev.group_id, messages=chain) +from .handlers import pic_private, picmessage, replymessage, start_finder, thanks # noqa: E402,F401 diff --git a/hexi/plugins/nonebot_plugin_picfinder_take/handlers/__init__.py b/hexi/plugins/nonebot_plugin_picfinder_take/handlers/__init__.py new file mode 100644 index 0000000..5e3c7b8 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_picfinder_take/handlers/__init__.py @@ -0,0 +1,3 @@ +"""搜图 —— Trigger 层。""" + +from .scan import pic_private, picmessage, replymessage, start_finder, thanks # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_picfinder_take/handlers/scan.py b/hexi/plugins/nonebot_plugin_picfinder_take/handlers/scan.py new file mode 100644 index 0000000..39ee547 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_picfinder_take/handlers/scan.py @@ -0,0 +1,329 @@ +"""搜图 —— 触发器(Trigger + View)层。""" + +from __future__ import annotations + +import re +from asyncio import sleep +from datetime import datetime, timedelta + +from nonebot import get_driver, on_message, on_startswith, require +from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent, PrivateMessageEvent +from nonebot.exception import ActionFailed +from nonebot.log import logger +from nonebot.plugin import PluginMetadata +from nonebot.rule import is_type, to_me + +require("nonebot_plugin_alconna") +from nonebot_plugin_alconna import UniMessage + +from ..config import CHECK, DAILY_LIMIT, IGNORE_STAMP, SAUCENAO_KEY, threshold +from ..services.image import check_screenshot, get_image_data_ascii, get_image_data_sauce +from ..services.search import picfinder +from ..services.state import lmtd, pls + +__plugin_meta__ = PluginMetadata( + name="搜图", + description="SauceNAO + ascii2d 二次元搜图", + usage=( + "(xx为bot名称)\n" + "[@bot+图片] 单张/多张搜图\n" + "[xx搜图] 进入批量搜图模式\n" + "[谢谢xx] 退出批量搜图模式" + ), + type="application", +) + +driver_config = get_driver().config +SUPERUSERS = driver_config.superusers +NICKNAMES = list(driver_config.nickname) if driver_config.nickname else ["竹竹"] +NICKNAME = NICKNAMES[0] + +start_finder = on_startswith(("识图", "搜图", "查图", "找图"), rule=to_me()) +picmessage = on_message(rule=is_type(GroupMessageEvent), block=False) +replymessage = on_message(rule=is_type(GroupMessageEvent), block=False) +thanks = on_startswith("谢谢") +pic_private = on_message(rule=is_type(PrivateMessageEvent), block=False) + + +def parse_report(text: str) -> UniMessage: + msg = UniMessage() + parts = re.split(r"(\[CQ:image,[^\]]*\])", text) + for part in parts: + if part.startswith("[CQ:image,"): + m = re.search(r"file=([^,\]]+)", part) + msg += UniMessage.image(url=m.group(1) if m else "") + elif part: + msg += UniMessage.text(part) + return msg + + +def _extract_image(ev) -> tuple[str, str, str | None] | None: + for m in ev.message: + if m.type == "image": + return m.data["file"], m.data["url"], m.data.get("subType") + return None + + +@start_finder.handle() +async def start_finder_handle(bot: Bot, ev: GroupMessageEvent): + uid = ev.user_id + gid = ev.group_id + mid = ev.message_id + if str(uid) not in SUPERUSERS: + await UniMessage.text("暂不支持在群聊中使用!").send() + return + ret = _extract_image(ev) + if not ret: + if pls.get_on_off_status(gid): + if uid == pls.on[gid]: + pls.timeout[gid] = datetime.now() + timedelta(seconds=30) + await UniMessage.text( + "您已经在搜图模式下啦!\n如想退出搜图模式请发送“谢谢竹竹”~" + ).send() + await start_finder.finish() + else: + await UniMessage.at(user_id=str(pls.on[gid])).text( + "正在搜图,请耐心等待~" + ).send() + await start_finder.finish() + pls.turn_on(gid, uid) + await UniMessage.text( + f"了解~请发送图片吧!支持批量噢!\n如想退出搜索模式请发送“谢谢{NICKNAME}”" + ).send() + await sleep(30) + ct = 0 + while pls.get_on_off_status(gid): + if datetime.now() < pls.timeout[gid]: + if ct != pls.count[gid]: + ct = pls.count[gid] + pls.timeout[gid] = datetime.now() + timedelta(seconds=60) + else: + temp = pls.on[gid] + if not pls.count[gid]: + await UniMessage.at(user_id=str(temp)).text( + " 由于超时,已为您自动退出搜图模式~\n您本次搜索期间未发送任何图片,请检查是否被吞图~" + ).send() + else: + await UniMessage.at(user_id=str(temp)).text( + f" 由于超时,已为您自动退出搜图模式,以后要记得说“谢谢{NICKNAME}”来退出搜图模式噢~\n您本次搜索共搜索了{pls.count[gid]}张图片~" + ).send() + pls.turn_off(ev.group_id) + break + await sleep(30) + return + file, url, _ = ret + if str(uid) not in SUPERUSERS: + if not lmtd.check(uid): + await UniMessage.text( + f"您今天已经搜过{DAILY_LIMIT}次图了,休息一下明天再来吧~" + ).send(at_sender=True) + return + if CHECK: + result = await check_screenshot(bot, file, url) + if result: + if result == 1: + await UniMessage.reply(id=str(mid)).text( + "该图似乎是手机截屏,请进行适当裁剪后再尝试搜图~\n*请注意搜索漫画时务必截取一个完整单页进行搜图~" + ).send() + if result == 2: + await UniMessage.reply(id=str(mid)).text( + "该图似乎是长图拼接,请进行适当裁剪后再尝试搜图~\n*请注意搜索漫画时务必截取一个完整单页进行搜图~" + ).send() + return + await UniMessage.text("正在搜索,请稍候~").send() + await picfinder(bot, ev, url) + + +@picmessage.handle() +async def picmessage_handle(bot: Bot, ev: GroupMessageEvent): + mid = ev.message_id + atcheck = False + batchcheck = False + for m in ev.message: + if m.type == "at" and int(m.data["qq"]) == ev.self_id: + atcheck = True + if pls.get_on_off_status(ev.group_id): + if int(pls.on[ev.group_id]) == int(ev.user_id): + batchcheck = True + if not (batchcheck or atcheck): + return + uid = ev.user_id + ret = _extract_image(ev) + if not ret: + return + file, url, sbtype = ret + if str(uid) not in SUPERUSERS: + if not lmtd.check(uid): + await UniMessage.text( + f"您今天已经搜过{DAILY_LIMIT}次图了,休息一下明天再来吧~" + ).send(at_sender=True) + if pls.get_on_off_status(ev.group_id): + pls.turn_off(ev.group_id) + return + if pls.get_on_off_status(ev.group_id): + pls.count_plus(ev.group_id) + if pls.count[ev.group_id] > pls.limit[ev.group_id]: + await UniMessage.text( + f"您今天已经搜过{DAILY_LIMIT}次图了,休息一下明天再来吧~" + ).send(at_sender=True) + pls.turn_off(ev.group_id) + return + if sbtype and IGNORE_STAMP: + if sbtype != "0": + await UniMessage.reply(id=str(mid)).text( + "该图为表情,已忽略~如确需搜索请尝试单发搜索或回复搜索~" + ).send() + return + if CHECK: + result = await check_screenshot(bot, file, url) + if result: + if result == 1: + await UniMessage.reply(id=str(mid)).text( + "该图似乎是手机截屏,请手动进行适当裁剪后再尝试搜图~\n*请注意搜索漫画时务必截取一个完整单页进行搜图~" + ).send() + if result == 2: + await UniMessage.reply(id=str(mid)).text( + "该图似乎是长图拼接,请手动进行适当裁剪后再尝试搜图~\n*请注意搜索漫画时务必截取一个完整单页进行搜图~" + ).send() + return + if "c2cpicdw.qpic.cn/offpic_new/" in url: + md5 = file[:-6].upper() + url = f"http://gchat.qpic.cn/gchatpic_new/0/0-0-{md5}/0?term=2" + await UniMessage.text("正在搜索,请稍候~").send() + await picfinder(bot, ev, url) + + +@replymessage.handle() +async def replymessage_handle(bot: Bot, ev: GroupMessageEvent): + mid = ev.message_id + uid = ev.user_id + seg = ev.message[0] + if seg.type != "reply": + return + tmid = seg.data["id"] + cmd = ev.message.extract_plain_text() + flag1 = 0 + flag2 = 0 + for m in ev.message[2:]: + if m.type == "at" and int(m.data["qq"]) == ev.self_id: + flag1 = 1 + for name in NICKNAMES: + if name in cmd: + flag1 = 1 + break + for pfcmd in ["识图", "搜图", "查图", "找图"]: + if pfcmd in cmd: + flag2 = 1 + if not (flag1 and flag2): + return + if str(uid) not in SUPERUSERS: + if not lmtd.check(uid): + await UniMessage.text( + f"您今天已经搜过{DAILY_LIMIT}次图了,休息一下明天再来吧~" + ).send(at_sender=True) + try: + tmsg = await bot.get_msg(message_id=int(tmid)) + except ActionFailed: + await UniMessage.text("该消息已过期,请重新转发~").send() + await replymessage.finish() + ret = re.search(r"\[CQ:image,file=(.*)?,url=(.*)\]", str(tmsg["message"])) + if not ret: + await UniMessage.text("未找到图片~").send() + return + file = ret.group(1) + url = ret.group(2) + if ",subType=" in url: + url = url.split(",")[0] + elif ",subType=" in file: + file = file.split(",")[0] + if CHECK: + result = await check_screenshot(bot, file, url) + if result: + if result == 1: + await UniMessage.reply(id=str(mid)).text( + "该图似乎是手机截屏,请手动进行适当裁剪后再尝试搜图~\n*请注意搜索漫画时务必截取一个完整单页进行搜图~" + ).send() + if result == 2: + await UniMessage.reply(id=str(mid)).text( + "该图似乎是长图拼接,请手动进行适当裁剪后再尝试搜图~\n*请注意搜索漫画时务必截取一个完整单页进行搜图~" + ).send() + return + if "c2cpicdw.qpic.cn/offpic_new/" in url: + md5 = file[:-6].upper() + url = f"http://gchat.qpic.cn/gchatpic_new/0/0-0-{md5}/0?term=2" + await UniMessage.text("正在搜索,请稍候~").send() + await picfinder(bot, ev, url) + + +@thanks.handle() +async def thanks_handle(bot: Bot, ev: GroupMessageEvent): + gid = ev.group_id + name = ev.message.extract_plain_text().removeprefix("谢谢").strip() + if name not in NICKNAMES: + return + if pls.get_on_off_status(gid): + if pls.on[gid] != ev.user_id: + await UniMessage.text("不能替别人结束搜图哦~").send() + return + if not pls.count[gid]: + await UniMessage.text("不用谢~\n您本次搜索期间未发送任何图片,请检查是否被吞图~").send() + else: + await UniMessage.text(f"不用谢~\n您本次搜索共搜索了{pls.count[gid]}张图片~").send() + pls.turn_off(gid) + return + await UniMessage.text("にゃ~").send() + + +@pic_private.handle() +async def pic_private_handle(bot: Bot, ev: PrivateMessageEvent): + uid = ev.user_id + ret = _extract_image(ev) + if not ret: + flag1 = flag2 = 0 + for name in NICKNAMES: + if name in str(ev.message): + flag1 = 1 + break + for pfcmd in ["识图", "搜图", "查图", "找图"]: + if pfcmd in str(ev.message): + flag2 = 1 + if flag1 and flag2: + await UniMessage.text("私聊搜图请直接发送图片~").send() + return + file, url, _ = ret + if not lmtd.check(uid): + await UniMessage.text( + f"您今天已经搜过{DAILY_LIMIT}次图了,休息一下明天再来吧~" + ).send() + return + if "c2cpicdw.qpic.cn/offpic_new/" in url: + md5 = file.upper() + logger.info(f"图片URL{url}") + url = f"https://gchat.qpic.cn/gchatpic_new/0/0-0-{md5}/0?term=2" + await UniMessage.text("正在搜索,请稍候~").send() + result = await get_image_data_sauce(url, SAUCENAO_KEY) + image_data_report = result[0] + simimax = result[1] + if "Index #" in image_data_report: + su = next(iter(SUPERUSERS)) + await bot.send_private_msg(user_id=int(su), message="发生index解析错误") + await bot.send_private_msg(user_id=int(su), message=url) + await bot.send_private_msg(user_id=int(su), message=image_data_report) + await parse_report(image_data_report).send() + if float(simimax) > float(threshold): + lmtd.increase(uid) + else: + if simimax != 0: + await UniMessage.text("相似度过低,换用ascii2d检索中…").send() + else: + logger.error("SauceNao not found imageInfo") + await UniMessage.text("SauceNao检索失败,换用ascii2d检索中…").send() + image_data_report = await get_image_data_ascii(url) + if image_data_report[0]: + await parse_report(image_data_report[0]).send() + lmtd.increase(uid) + if image_data_report[1]: + await parse_report(image_data_report[1]).send() + if not (image_data_report[0] or image_data_report[1]): + logger.error("ascii2d not found imageInfo") + await UniMessage.text("ascii2d检索失败…").send() diff --git a/hexi/plugins/nonebot_plugin_picfinder_take/services/__init__.py b/hexi/plugins/nonebot_plugin_picfinder_take/services/__init__.py new file mode 100644 index 0000000..d8e2f1e --- /dev/null +++ b/hexi/plugins/nonebot_plugin_picfinder_take/services/__init__.py @@ -0,0 +1,4 @@ +"""搜图 —— Service 层。""" + +from .search import picfinder # noqa: F401 +from .state import lmtd, pls # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_picfinder_take/image.py b/hexi/plugins/nonebot_plugin_picfinder_take/services/image.py similarity index 97% rename from hexi/plugins/nonebot_plugin_picfinder_take/image.py rename to hexi/plugins/nonebot_plugin_picfinder_take/services/image.py index adafbae..e627e43 100644 --- a/hexi/plugins/nonebot_plugin_picfinder_take/image.py +++ b/hexi/plugins/nonebot_plugin_picfinder_take/services/image.py @@ -13,7 +13,7 @@ from lxml import etree from nonebot.log import logger from playwright.async_api import async_playwright -from .config import ( +from ..config import ( ASCII2D_COOKIES_FILE, ASCII_RESULT_NUM, HOST_CUSTOM, @@ -75,28 +75,28 @@ async def check_screenshot(bot, file, imgurl): async with _make_client(20) as client: pichead = await client.head(imgurl) if pichead.headers["Content-Type"] == "image/gif": - print("gif pic, not likely a screen shot") + logger.info("gif pic, not likely a screen shot") return 0 try: resp = await client.get(imgurl) image = Image.open(BytesIO(resp.content)) except Exception: - print("download failed") + logger.info("download failed") return 0 cord = image.size[0] / image.size[1] height = image.size[1] - print(cord) + logger.info(cord) if cord > 0.565: - print("too short, not likely a screen shot") + logger.info("too short, not likely a screen shot") return 0 if cord < 0.2: - print("too long, might be long screen shot") + logger.info("too long, might be long screen shot") return 2 - print("size checked, next ocr") + logger.info("size checked, next ocr") try: ocr_result = await bot.call_api(".ocr_image", image=file) except Exception: - print("ocr failed") + logger.info("ocr failed") return False flag = 0 for result in ocr_result["texts"]: @@ -106,12 +106,12 @@ async def check_screenshot(bot, file, imgurl): key4 = re.search("[0-9]{1,2}%", result["text"]) # 电量 key5 = re.search("[0-9]{0,3}[\\\/][0-9]{0,3}", result["text"]) # 页数 if key2 or key3 or key4: - print(str(result)) + logger.info(str(result)) loc = result["coordinates"][2]["y"] if int(loc) < (int(height) / 19): flag = 1 if key1 or key5: - print(str(result)) + logger.info(str(result)) loc = result["coordinates"][2]["y"] if int(loc) < (int(height) / 19) or int(loc) > (int(height) * 18 / 20): flag = 1 @@ -383,7 +383,7 @@ def sauces_info(sauce): index = sauce["header"]["index_id"] service_name = f"Index #{index}" info = "no info" - print(format_exc()) + logger.info(format_exc()) return service_name, info @@ -475,7 +475,7 @@ class SauceNAO: ) ) except Exception as e: - print(format_exc()) + logger.info(format_exc()) thumbnail_image = "[预览图下载失败]" else: thumbnail_image = "" @@ -492,7 +492,7 @@ class SauceNAO: repass = putline except Exception as e: - print(format_exc()) + logger.info(format_exc()) pass index += 1 return [repass, simimax] @@ -570,7 +570,7 @@ class ascii2d: info.append([info_url, tag, thumb_url, title]) except Exception as e: - print(format_exc()) + logger.info(format_exc()) logger.error(e) continue @@ -591,7 +591,7 @@ class ascii2d: pic2b64(ats_pic(Image.open(BytesIO(thumb_content)))) ) except Exception as e: - print(format_exc()) + logger.info(format_exc()) thumbnail_image = "[预览图下载失败]" else: thumbnail_image = "" @@ -616,7 +616,7 @@ class ascii2d: logger.error("ascii2d 页面获取失败(Cloudflare challenge 未通过)") return [putline1, putline2] except Exception as e: - print(format_exc()) + logger.info(format_exc()) logger.error(f"ascii2d get html data failed: {e}") return [putline1, putline2] @@ -708,7 +708,7 @@ CHROME_PATHS = [ # 专用浏览器 profile 目录(cf_clearance 持久化,首次过验证后长期有效) CHROME_PROFILE_DIR = os.path.join( - os.path.dirname(os.path.abspath(__file__)), "data", "chrome_profile" + os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "data", "chrome_profile" ) @@ -856,10 +856,10 @@ async def get_html_content(url, cookies=None): logger.info("ascii2d cookies 已刷新回写") except Exception as e: logger.error(f"ascii2d cookies 回写失败: {e}") - print(f"获取到的html内容:{html}") + logger.info(f"获取到的html内容:{html}") return html except Exception as e: - print(f"Error fetching page: {e}") + logger.info(f"Error fetching page: {e}") return None finally: await context.close() diff --git a/hexi/plugins/nonebot_plugin_picfinder_take/services/search.py b/hexi/plugins/nonebot_plugin_picfinder_take/services/search.py new file mode 100644 index 0000000..18f0e33 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_picfinder_take/services/search.py @@ -0,0 +1,67 @@ +"""搜图 —— 搜索编排(Service 层)。""" + +from __future__ import annotations + +from nonebot import get_driver +from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent +from nonebot.log import logger + +from ..config import CHAIN_REPLY, SAUCENAO_KEY, threshold +from .image import get_image_data_ascii, get_image_data_sauce +from .state import lmtd + +_driver = get_driver() +SUPERUSERS = list(_driver.config.superusers) +_NICKNAMES = list(_driver.config.nickname) if _driver.config.nickname else ["竹竹"] +NICKNAME = _NICKNAMES[0] + + +async def chain_reply(bot: Bot, ev: GroupMessageEvent, chain, msg): + if not CHAIN_REPLY: + return chain + data = { + "type": "node", + "data": { + "name": str(NICKNAME) if str(NICKNAME) else "竹竹", + "uin": str(ev.self_id), + "content": str(msg), + }, + } + chain.append(data) + return chain + + +async def picfinder(bot: Bot, ev: GroupMessageEvent, image_data): + uid = ev.user_id + chain = [] + result = await get_image_data_sauce(image_data, SAUCENAO_KEY) + image_data_report = result[0] + simimax = result[1] + if "Index #" in image_data_report: + su = next(iter(SUPERUSERS)) + await bot.send_private_msg(user_id=int(su), message="发生index解析错误") + await bot.send_private_msg(user_id=int(su), message=image_data) + await bot.send_private_msg(user_id=int(su), message=image_data_report) + chain = await chain_reply(bot, ev, chain, image_data_report) + + if float(simimax) > float(threshold): + lmtd.increase(uid) + else: + if simimax != 0: + chain = await chain_reply(bot, ev, chain, "相似度过低,换用ascii2d检索中…") + else: + logger.error("SauceNao not found imageInfo") + chain = await chain_reply(bot, ev, chain, "SauceNao检索失败,换用ascii2d检索中…") + + image_data_report = await get_image_data_ascii(image_data) + if image_data_report[0]: + chain = await chain_reply(bot, ev, chain, image_data_report[0]) + lmtd.increase(uid) + if image_data_report[1]: + chain = await chain_reply(bot, ev, chain, image_data_report[1]) + if not (image_data_report[0] or image_data_report[1]): + logger.error("ascii2d not found imageInfo") + chain = await chain_reply(bot, ev, chain, "ascii2d检索失败…") + + if CHAIN_REPLY: + await bot.send_group_forward_msg(group_id=ev.group_id, messages=chain) diff --git a/hexi/plugins/nonebot_plugin_picfinder_take/services/state.py b/hexi/plugins/nonebot_plugin_picfinder_take/services/state.py new file mode 100644 index 0000000..c952609 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_picfinder_take/services/state.py @@ -0,0 +1,59 @@ +"""搜图 —— 运行态(Service 层:每日限流 + 批量搜索会话)。""" + +from __future__ import annotations + +from datetime import datetime, timedelta + +from ..config import DAILY_LIMIT, SEARCH_TIMEOUT + + +class DailyNumberLimiter: + """每日次数限制器(按年积日计数)""" + + def __init__(self, max_num): + self.max = max_num + self.today = -1 + self.count = {} + + def check(self, key) -> bool: + day = datetime.now().timetuple().tm_yday + if day != self.today: + self.today = day + self.count.clear() + return self.count.get(key, 0) < self.max + + def get_num(self, key): + return self.count.get(key, 0) + + def increase(self, key, num=1): + self.count[key] = self.count.get(key, 0) + num + + +class PicListener: + def __init__(self): + self.on = {} + self.count = {} + self.limit = {} + self.timeout = {} + + def get_on_off_status(self, gid): + return self.on[gid] if self.on.get(gid) is not None else False + + def turn_on(self, gid, uid): + self.on[gid] = uid + self.timeout[gid] = datetime.now() + timedelta(seconds=SEARCH_TIMEOUT) + self.count[gid] = 0 + self.limit[gid] = DAILY_LIMIT - lmtd.get_num(uid) + + def turn_off(self, gid): + self.on.pop(gid) + self.count.pop(gid) + self.timeout.pop(gid) + self.limit.pop(gid) + + def count_plus(self, gid): + self.count[gid] += 1 + + +lmtd = DailyNumberLimiter(DAILY_LIMIT) +pls = PicListener() diff --git a/hexi/plugins/nonebot_plugin_picstatus/__init__.py b/hexi/plugins/nonebot_plugin_picstatus/__init__.py index d2a2b30..345114f 100644 --- a/hexi/plugins/nonebot_plugin_picstatus/__init__.py +++ b/hexi/plugins/nonebot_plugin_picstatus/__init__.py @@ -10,7 +10,7 @@ require("nonebot_plugin_localstore") from . import __main__ as __main__, misc_statistics as misc_statistics from .bg_provider import bg_preloader -from .collectors import ( +from .services.collectors import ( enable_collectors, load_builtin_collectors, registered_collectors, diff --git a/hexi/plugins/nonebot_plugin_picstatus/__main__.py b/hexi/plugins/nonebot_plugin_picstatus/__main__.py index 7ade6ad..42df148 100644 --- a/hexi/plugins/nonebot_plugin_picstatus/__main__.py +++ b/hexi/plugins/nonebot_plugin_picstatus/__main__.py @@ -12,7 +12,7 @@ from nonebot.typing import T_State from nonebot_plugin_alconna.uniseg import Image, OriginalUniMsg, UniMessage, image_fetch from .bg_provider import BgBytesData, bg_preloader -from .collectors import collect_all +from .services.collectors import collect_all from .config import config from .misc_statistics import bot_avatar_cache, bot_info_cache, cache_bot_avatar from .templates import render_current_template diff --git a/hexi/plugins/nonebot_plugin_picstatus/services/__init__.py b/hexi/plugins/nonebot_plugin_picstatus/services/__init__.py new file mode 100644 index 0000000..606cab1 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_picstatus/services/__init__.py @@ -0,0 +1 @@ +# picstatus —— Service 层。 diff --git a/hexi/plugins/nonebot_plugin_picstatus/collectors/__init__.py b/hexi/plugins/nonebot_plugin_picstatus/services/collectors/__init__.py similarity index 99% rename from hexi/plugins/nonebot_plugin_picstatus/collectors/__init__.py rename to hexi/plugins/nonebot_plugin_picstatus/services/collectors/__init__.py index 71aead4..8100e2b 100644 --- a/hexi/plugins/nonebot_plugin_picstatus/collectors/__init__.py +++ b/hexi/plugins/nonebot_plugin_picstatus/services/collectors/__init__.py @@ -12,7 +12,7 @@ from typing_extensions import override from nonebot import logger from nonebot_plugin_apscheduler import scheduler -from ..config import config +from ...config import config T = TypeVar("T") TI = TypeVar("TI") diff --git a/hexi/plugins/nonebot_plugin_picstatus/collectors/bot.py b/hexi/plugins/nonebot_plugin_picstatus/services/collectors/bot.py similarity index 94% rename from hexi/plugins/nonebot_plugin_picstatus/collectors/bot.py rename to hexi/plugins/nonebot_plugin_picstatus/services/collectors/bot.py index 1535a79..3119032 100644 --- a/hexi/plugins/nonebot_plugin_picstatus/collectors/bot.py +++ b/hexi/plugins/nonebot_plugin_picstatus/services/collectors/bot.py @@ -6,9 +6,9 @@ from typing import TYPE_CHECKING from nonebot import get_bots, logger from nonebot.matcher import current_bot -from ..config import config -from ..misc_statistics import bot_connect_time, bot_info_cache, recv_num, send_num -from ..util import format_timedelta +from ...config import config +from ...misc_statistics import bot_connect_time, bot_info_cache, recv_num, send_num +from ...util import format_timedelta from . import normal_collector if TYPE_CHECKING: diff --git a/hexi/plugins/nonebot_plugin_picstatus/collectors/cpu.py b/hexi/plugins/nonebot_plugin_picstatus/services/collectors/cpu.py similarity index 100% rename from hexi/plugins/nonebot_plugin_picstatus/collectors/cpu.py rename to hexi/plugins/nonebot_plugin_picstatus/services/collectors/cpu.py diff --git a/hexi/plugins/nonebot_plugin_picstatus/collectors/disk.py b/hexi/plugins/nonebot_plugin_picstatus/services/collectors/disk.py similarity index 98% rename from hexi/plugins/nonebot_plugin_picstatus/collectors/disk.py rename to hexi/plugins/nonebot_plugin_picstatus/services/collectors/disk.py index 3406786..0f889a7 100644 --- a/hexi/plugins/nonebot_plugin_picstatus/collectors/disk.py +++ b/hexi/plugins/nonebot_plugin_picstatus/services/collectors/disk.py @@ -4,8 +4,8 @@ from typing import TypeAlias import psutil from psutil._common import sdiskpart, sdiskio -from ..config import config -from ..util import match_list_regexp +from ...config import config +from ...util import match_list_regexp from . import ( BaseTimeBasedCounterCollector, NormalTimeBasedCounterCollector, diff --git a/hexi/plugins/nonebot_plugin_picstatus/collectors/mem.py b/hexi/plugins/nonebot_plugin_picstatus/services/collectors/mem.py similarity index 100% rename from hexi/plugins/nonebot_plugin_picstatus/collectors/mem.py rename to hexi/plugins/nonebot_plugin_picstatus/services/collectors/mem.py diff --git a/hexi/plugins/nonebot_plugin_picstatus/collectors/misc.py b/hexi/plugins/nonebot_plugin_picstatus/services/collectors/misc.py similarity index 96% rename from hexi/plugins/nonebot_plugin_picstatus/collectors/misc.py rename to hexi/plugins/nonebot_plugin_picstatus/services/collectors/misc.py index 21c0ac6..7976b43 100644 --- a/hexi/plugins/nonebot_plugin_picstatus/collectors/misc.py +++ b/hexi/plugins/nonebot_plugin_picstatus/services/collectors/misc.py @@ -7,8 +7,8 @@ from pathlib import Path import nonebot import psutil -from ..misc_statistics import nonebot_run_time -from ..util import format_time_delta_ps +from ...misc_statistics import nonebot_run_time +from ...util import format_time_delta_ps from . import first_time_collector, normal_collector, periodic_collector @@ -78,7 +78,7 @@ async def nonebot_version() -> str: @first_time_collector() async def ps_version() -> str: - from .. import __version__ + from ... import __version__ return __version__ diff --git a/hexi/plugins/nonebot_plugin_picstatus/collectors/network.py b/hexi/plugins/nonebot_plugin_picstatus/services/collectors/network.py similarity index 97% rename from hexi/plugins/nonebot_plugin_picstatus/collectors/network.py rename to hexi/plugins/nonebot_plugin_picstatus/services/collectors/network.py index 2f1e8d1..34de579 100644 --- a/hexi/plugins/nonebot_plugin_picstatus/collectors/network.py +++ b/hexi/plugins/nonebot_plugin_picstatus/services/collectors/network.py @@ -7,8 +7,8 @@ import psutil from httpx import AsyncClient, ReadTimeout from psutil._common import snetio -from ..config import TestSiteCfg, config -from ..util import match_list_regexp +from ...config import TestSiteCfg, config +from ...util import match_list_regexp from . import ( BaseTimeBasedCounterCollector, NormalTimeBasedCounterCollector, diff --git a/hexi/plugins/nonebot_plugin_picstatus/collectors/process.py b/hexi/plugins/nonebot_plugin_picstatus/services/collectors/process.py similarity index 96% rename from hexi/plugins/nonebot_plugin_picstatus/collectors/process.py rename to hexi/plugins/nonebot_plugin_picstatus/services/collectors/process.py index 48ecb50..5e66c00 100644 --- a/hexi/plugins/nonebot_plugin_picstatus/collectors/process.py +++ b/hexi/plugins/nonebot_plugin_picstatus/services/collectors/process.py @@ -4,8 +4,8 @@ from typing import cast import psutil -from ..config import config -from ..util import match_list_regexp +from ...config import config +from ...util import match_list_regexp from . import normal_collector, periodic_collector diff --git a/hexi/plugins/nonebot_plugin_picstatus/util.py b/hexi/plugins/nonebot_plugin_picstatus/util.py index 4d7a468..cd49cb0 100644 --- a/hexi/plugins/nonebot_plugin_picstatus/util.py +++ b/hexi/plugins/nonebot_plugin_picstatus/util.py @@ -6,7 +6,7 @@ from typing import TYPE_CHECKING from cookit import DebugFileWriter, auto_convert_unit, format_timedelta if TYPE_CHECKING: - from .collectors.cpu import CpuFreq + from .services.collectors.cpu import CpuFreq format_time_delta_ps = partial(format_timedelta, day_divider=" ", day_suffix="天") diff --git a/hexi/plugins/nonebot_plugin_random_jm_code/__init__.py b/hexi/plugins/nonebot_plugin_random_jm_code/__init__.py index abb62ea..1d4a2d9 100644 --- a/hexi/plugins/nonebot_plugin_random_jm_code/__init__.py +++ b/hexi/plugins/nonebot_plugin_random_jm_code/__init__.py @@ -1,22 +1,9 @@ -import json -import random -import json -import random -import asyncio -import os -from typing import List +"""随机 JM 码 —— 入口(元数据 + 配置注册)。""" -from nonebot.adapters.onebot.v11 import MessageSegment, PokeNotifyEvent, Message -from nonebot.plugin.on import on_notice, on_command -from nonebot import on_type, on_message, logger -from nonebot.adapters import Event -from nonebot.matcher import Matcher -from nonebot.params import CommandArg -from nonebot.rule import to_me -from nonebot_plugin_alconna import UniMessage, get_target +from nonebot import require from nonebot.plugin import PluginMetadata -from hexi.plugins.nonebot_plugin_hexi_core.message_utils import send_poke +require("nonebot_plugin_alconna") __plugin_meta__ = PluginMetadata( name="随机JM码", @@ -25,127 +12,7 @@ __plugin_meta__ = PluginMetadata( type="application", ) -BASE_DIR = os.path.dirname(os.path.abspath(__file__)) -FILE_PATH = os.path.join(BASE_DIR, "jm_code.json") +from . import config as _config # noqa: E402 +from . import handlers as _handlers # noqa: E402 -TEXT_TEMPLATES = [ - "给你{code},拿去吧", - "给你{code},记得谢谢我", - "给你{code},注意保养弹簧" -] -BLOCK_CODE = ["350235", "350234"] - -WHITE_LIST = ["1019165018"] - -jm_handler = on_notice(priority=10, block=False, rule=to_me()) - -add_jm_code = on_command("jm", rule=to_me()) - - -@add_jm_code.handle() -async def add_more_jm_code(event: Event, matcher: Matcher): - input_code = event.get_message().extract_plain_text().strip() - cmd = matcher.state["_prefix"]["command"][0] - input_code = input_code.replace(cmd, "") - if input_code in BLOCK_CODE: - await UniMessage.at(event.get_user_id()).text(" 不准发石!!").send() - return - await add_new_jm_code(input_code) - await UniMessage.reply(event.get_user_id()).text(" 添加成功").send() - return - - -@jm_handler.handle() -async def random_jm_code(event: Event, poke_event: PokeNotifyEvent): - user_id = event.get_user_id() - logger.info(f"{user_id}触发了戳一戳") - target = get_target(event) - group_id = target.parent_id or target.id or poke_event.group_id - logger.info(f"触发戳一戳的群聊:{group_id}") - if group_id in WHITE_LIST: - logger.info(f"白名单:{group_id}") - choice = random.randint(0, 100) - logger.info(f"触发概率:{choice}") - if choice >= 50: - await poke_reply(event) - else: - logger.info("不做操作") - - else: - logger.info(f"不在白名单:{group_id}") - if target.private: - group_id = None - result = await send_poke(group_id=group_id, user_id=user_id) - logger.info(result) - return - - -async def poke_reply(event: Event): - user_id = event.get_user_id() - jm_message = await get_random_jm_code() - await UniMessage.at(user_id).text(" " + jm_message).send() - - -JM_CODES: List[int] = [] -_LOADED = False -LOCK = asyncio.Lock() - - -def _safe_write_json(data, file_path: str): - tmp_path = file_path + ".tmp" - - with open(tmp_path, "w", encoding="utf-8") as f: - json.dump(data, f, ensure_ascii=False, indent=2) - - # 原子替换(防止写一半崩溃) - os.replace(tmp_path, file_path) - - -async def load_codes(file_path: str = FILE_PATH): - global JM_CODES, _LOADED - - if _LOADED: - return - - async with LOCK: - if _LOADED: - return - - if not os.path.exists(file_path): - JM_CODES = [] - _safe_write_json(JM_CODES, file_path) - else: - with open(file_path, "r", encoding="utf-8") as f: - try: - JM_CODES = json.load(f) - except json.JSONDecodeError: - # 文件损坏时兜底 - JM_CODES = [] - - _LOADED = True - - -async def get_random_jm_code() -> str: - await load_codes() - - if not JM_CODES: - return "暂无可用代码" - - code = random.choice(JM_CODES) - logger.info(f"随机JM:{code}") - template = random.choice(TEXT_TEMPLATES) - - return template.format(code=code) - - -async def add_new_jm_code(new_code: int) -> bool: - await load_codes() - - async with LOCK: - if new_code in JM_CODES: - return False # 已存在 - - JM_CODES.append(new_code) - _safe_write_json(JM_CODES, FILE_PATH) - - return True +_config.register_config() diff --git a/hexi/plugins/nonebot_plugin_random_jm_code/config.py b/hexi/plugins/nonebot_plugin_random_jm_code/config.py new file mode 100644 index 0000000..76f3663 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_random_jm_code/config.py @@ -0,0 +1,54 @@ +"""随机 JM 码 —— 配置注册(按《插件配置文件标准》)。 + +把原本硬编码在 __init__.py 里的文案模板 / 屏蔽码 / 白名单群号 +注册为 Web 可读可改的配置项(来源无关,store=本模块)。运行期插件读本模块常量, +Web 保存后经 apply 热更新本模块属性,重启也不丢。 +""" + +from __future__ import annotations + +import sys as _sys + +from hexi.config_standard import register_config_items + +# plugin_id = NoneBot 插件模块名 +_PLUGIN_ID = __package__ + +# —— 可配置常量(来源为本模块) —— +TEXT_TEMPLATES = [ + "给你{code},拿去吧", + "给你{code},记得谢谢我", + "给你{code},注意保养弹簧", +] +BLOCK_CODE = ["350235", "350234"] +WHITE_LIST = ["1019165018"] + + +def register_config() -> None: + register_config_items( + _PLUGIN_ID, + [ + { + "key": "TEXT_TEMPLATES", + "label": "随机文案模板", + "type": "text", + "item_type": "str", + "default": TEXT_TEMPLATES, + }, + { + "key": "BLOCK_CODE", + "label": "屏蔽码", + "type": "text", + "item_type": "str", + "default": BLOCK_CODE, + }, + { + "key": "WHITE_LIST", + "label": "白名单群号", + "type": "text", + "item_type": "str", + "default": WHITE_LIST, + }, + ], + store=_sys.modules[__name__], + ) diff --git a/hexi/plugins/nonebot_plugin_random_jm_code/handlers/__init__.py b/hexi/plugins/nonebot_plugin_random_jm_code/handlers/__init__.py new file mode 100644 index 0000000..f9bc0e7 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_random_jm_code/handlers/__init__.py @@ -0,0 +1,3 @@ +"""随机 JM 码 —— Trigger 层。""" + +from .jm import add_jm_code, jm_handler # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_random_jm_code/handlers/jm.py b/hexi/plugins/nonebot_plugin_random_jm_code/handlers/jm.py new file mode 100644 index 0000000..6747a15 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_random_jm_code/handlers/jm.py @@ -0,0 +1,72 @@ +"""随机 JM 码 —— 触发器(Trigger)层。""" + +from __future__ import annotations + +import random + +from nonebot import logger +from nonebot.adapters import Event +from nonebot.adapters.onebot.v11 import PokeNotifyEvent +from nonebot.matcher import Matcher +from nonebot.plugin import PluginMetadata +from nonebot.plugin.on import on_notice, on_command +from nonebot.rule import to_me +from nonebot_plugin_alconna import UniMessage, get_target + +from hexi.plugins.nonebot_plugin_hexi_core.message_utils import send_poke + +from .. import config as _cfg +from ..services.store import add_new_jm_code, get_random_jm_code + +__plugin_meta__ = PluginMetadata( + name="随机JM码", + description="随机发送JM码,支持添加与屏蔽", + usage="@bot 触发随机JM码;jm 添加JM码", + type="application", +) + +jm_handler = on_notice(priority=10, block=False, rule=to_me()) +add_jm_code = on_command("jm", rule=to_me()) + + +@add_jm_code.handle() +async def add_more_jm_code(event: Event, matcher: Matcher): + input_code = event.get_message().extract_plain_text().strip() + cmd = matcher.state["_prefix"]["command"][0] + input_code = input_code.replace(cmd, "") + if input_code in _cfg.BLOCK_CODE: + await UniMessage.at(event.get_user_id()).text(" 不准发石!!").send() + return + await add_new_jm_code(input_code) + await UniMessage.reply(event.get_user_id()).text(" 添加成功").send() + return + + +@jm_handler.handle() +async def random_jm_code(event: Event, poke_event: PokeNotifyEvent): + user_id = event.get_user_id() + logger.info(f"{user_id}触发了戳一戳") + target = get_target(event) + group_id = target.parent_id or target.id or poke_event.group_id + logger.info(f"触发戳一戳的群聊:{group_id}") + if group_id in _cfg.WHITE_LIST: + logger.info(f"白名单:{group_id}") + choice = random.randint(0, 100) + logger.info(f"触发概率:{choice}") + if choice >= 50: + await poke_reply(event) + else: + logger.info("不做操作") + else: + logger.info(f"不在白名单:{group_id}") + if target.private: + group_id = None + result = await send_poke(group_id=group_id, user_id=user_id) + logger.info(result) + return + + +async def poke_reply(event: Event): + user_id = event.get_user_id() + jm_message = await get_random_jm_code() + await UniMessage.at(user_id).text(" " + jm_message).send() diff --git a/hexi/plugins/nonebot_plugin_random_jm_code/jm_code.json b/hexi/plugins/nonebot_plugin_random_jm_code/jm_code.json deleted file mode 100644 index 351da38..0000000 --- a/hexi/plugins/nonebot_plugin_random_jm_code/jm_code.json +++ /dev/null @@ -1,286 +0,0 @@ -[ - "219", - "224", - "759", - "877", - "878", - "2057", - "2388", - "2868", - "4333", - "6102", - "6411", - "18212", - "20106", - "20348", - "20902", - "21274", - "21407", - "21994", - "22392", - "27512", - "27701", - "28650", - "33775", - "39509", - "46555", - "47729", - "50514", - "54747", - "55427", - "58267", - "61257", - "62268", - "69354", - "73451", - "74891", - "77778", - "78665", - "80358", - "85055", - "86779", - "89218", - "98509", - "98669", - "101792", - "104738", - "105854", - "107184", - "114445", - "116157", - "122333", - "122427", - "124116", - "124561", - "125237", - "127282", - "135697", - "138809", - "140620", - "142464", - "142568", - "145289", - "148486", - "148624", - "149578", - "149906", - "151607", - "151696", - "181107", - "181611", - "190447", - "192957", - "203446", - "207063", - "209232", - "218796", - "220455", - "220995", - "220996", - "221659", - "223153", - "224879", - "225764", - "230702", - "230806", - "231692", - "235366", - "239642", - "239797", - "241726", - "245189", - "247044", - "248646", - "249121", - "251050", - "255015", - "258778", - "263104", - "265236", - "266615", - "268453", - "269417", - "271249", - "273943", - "278032", - "281142", - "284185", - "285994", - "290391", - "291407", - "293593", - "293867", - "303683", - "305291", - "305428", - "306326", - "306848", - "308472", - "308595", - "310176", - "318730", - "318731", - "322028", - "326357", - "329995", - "333722", - "334554", - "343898", - "346346", - "346862", - "352727", - "355019", - "355659", - "362197", - "362460", - "368639", - "368837", - "369504", - "370634", - "371570", - "371631", - "371875", - "373099", - "374495", - "377532", - "380052", - "382336", - "384297", - "385372", - "389479", - "390353", - "392326", - "394523", - "395280", - "395281", - "397150", - "397478", - "398569", - "401496", - "401574", - "409658", - "409896", - "410841", - "411613", - "412004", - "415513", - "417463", - "427706", - "429322", - "433023", - "434797", - "434801", - "435777", - "441189", - "441594", - "442137", - "443170", - "445794", - "448098", - "451603", - "451610", - "452501", - "452699", - "453931", - "454803", - "465335", - "467110", - "467180", - "468624", - "469738", - "471872", - "472952", - "475378", - "476677", - "477029", - "477990", - "478437", - "479907", - "480142", - "480841", - "481536", - "481979", - "482542", - "484683", - "485647", - "485870", - "486253", - "487798", - "488125", - "495051", - "495256", - "498750", - "501638", - "501838", - "502132", - "505048", - "505241", - "505253", - "505484", - "507975", - "508253", - "509489", - "509834", - "511010", - "513984", - "515569", - "517500", - "523276", - "524360", - "527354", - "529468", - "533458", - "533552", - "537119", - "541285", - "541762", - "542252", - "543247", - "543525", - "543749", - "544360", - "544401", - "545733", - "547590", - "549168", - "550176", - "552312", - "554413", - "563746", - "608258", - "1020570", - "1060990", - "1071423", - "1176067", - "1190464", - "1193587", - "1196804", - "1202415", - "1206636", - "1212262", - "1212643", - "1215962", - "1216628", - "1217450", - "1222299", - "1222320", - "1222393", - "1223363", - "1224091", - "1224493", - "2904551", - "3037141", - "3157283", - "3300062", - "3481682", - "3918941", - "3921012", - "4214502", - "4283473", - "4283484", - "4366352", - "4380002", - "5430811", - "1434077", - "1423811" -] \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_random_jm_code/services/__init__.py b/hexi/plugins/nonebot_plugin_random_jm_code/services/__init__.py new file mode 100644 index 0000000..352e4f2 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_random_jm_code/services/__init__.py @@ -0,0 +1,3 @@ +"""随机 JM 码 —— Service 层。""" + +from .store import add_new_jm_code, get_random_jm_code # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_random_jm_code/services/store.py b/hexi/plugins/nonebot_plugin_random_jm_code/services/store.py new file mode 100644 index 0000000..5ceac98 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_random_jm_code/services/store.py @@ -0,0 +1,74 @@ +"""随机 JM 码 —— 数据访问(Service 层)。""" + +from __future__ import annotations + +import asyncio +import json +import os +import random +from pathlib import Path +from typing import List + +from .. import config as _cfg + +# 运行时数据统一放 hexi/data +_DATA_DIR = Path(__file__).resolve().parents[3] / "data" / "random_jm_code" +FILE_PATH = _DATA_DIR / "jm_code.json" +_LEGACY_FILE = Path(__file__).resolve().parents[1] / "jm_code.json" + +JM_CODES: List[int] = [] +_LOADED = False +LOCK = asyncio.Lock() + + +def _migrate_legacy() -> None: + if not FILE_PATH.exists() and _LEGACY_FILE.exists(): + _DATA_DIR.mkdir(parents=True, exist_ok=True) + os.replace(_LEGACY_FILE, FILE_PATH) + + +def _safe_write_json(data, file_path: Path): + file_path.parent.mkdir(parents=True, exist_ok=True) + tmp_path = file_path.with_suffix(".tmp") + with open(tmp_path, "w", encoding="utf-8") as f: + json.dump(data, f, ensure_ascii=False, indent=2) + os.replace(tmp_path, file_path) + + +async def load_codes(file_path: Path = FILE_PATH): + global JM_CODES, _LOADED + if _LOADED: + return + async with LOCK: + if _LOADED: + return + _migrate_legacy() + if not file_path.exists(): + JM_CODES = [] + _safe_write_json(JM_CODES, file_path) + else: + with open(file_path, "r", encoding="utf-8") as f: + try: + JM_CODES = json.load(f) + except json.JSONDecodeError: + JM_CODES = [] + _LOADED = True + + +async def get_random_jm_code() -> str: + await load_codes() + if not JM_CODES: + return "暂无可用代码" + code = random.choice(JM_CODES) + template = random.choice(_cfg.TEXT_TEMPLATES) + return template.format(code=code) + + +async def add_new_jm_code(new_code: int) -> bool: + await load_codes() + async with LOCK: + if new_code in JM_CODES: + return False + JM_CODES.append(new_code) + _safe_write_json(JM_CODES, FILE_PATH) + return True diff --git a/hexi/plugins/nonebot_plugin_regif/__init__.py b/hexi/plugins/nonebot_plugin_regif/__init__.py index a3adb6d..3a7a82d 100644 --- a/hexi/plugins/nonebot_plugin_regif/__init__.py +++ b/hexi/plugins/nonebot_plugin_regif/__init__.py @@ -1,19 +1,9 @@ -import os -import ssl -from nonebot import on_command, require, logger -from nonebot.adapters.onebot.v11 import MessageEvent +"""GIF 倒放""" + +from nonebot import require from nonebot.plugin import PluginMetadata -from hexi.plugins.nonebot_plugin_hexi_core.message_utils import get_reply_message - require("nonebot_plugin_alconna") -from nonebot_plugin_alconna import UniMessage -from nonebot.adapters.onebot.v11.bot import Bot -from nonebot.plugin.on import on_keyword -import httpx -from io import BytesIO -from PIL import Image, ImageSequence -re_gif = on_keyword({"倒放"}) __plugin_meta__ = PluginMetadata( name="GIF倒放", @@ -22,105 +12,4 @@ __plugin_meta__ = PluginMetadata( type="application", ) -@re_gif.handle() -async def rev_gif(event: MessageEvent, bot: Bot): - # 情况1,用户对需要倒放的gif进行回复 - messages = get_reply_message(event) - await match_revgif(messages) - - -async def match_revgif(messages): - img_urls = [] - - for message in messages: - logger.info(f"遍历消息: {message}") - - # 只处理图片消息 - if message.type != "image": - continue - - url = message.data.get("url") - - if url: - img_urls.append(url) - - # 没有图片直接返回 - if not img_urls: - logger.info("消息中没有图片") - return - for url in img_urls: - logger.info(f"获取到的图片链接:{url}") - await do_revgif(img_urls) - - -ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS) - -fd = os.path.dirname(__file__) - - -async def do_revgif(image_urls): - gif_img = [] - - async with httpx.AsyncClient(timeout=30) as client: - for image_url in image_urls: - try: - resp = await client.get(image_url) - resp.raise_for_status() - - image = Image.open(BytesIO(resp.content)) - - # 不是gif或只有1帧 - if getattr(image, "n_frames", 1) == 1: - continue - - gif_img.append(image) - - except Exception as e: - logger.warning(f"下载或解析图片失败: {e}") - - if not gif_img: - await UniMessage.text("没有发现GIF图片").send() - return - - suit_gifs = [] - - for gif in gif_img: - if gif.n_frames <= 400: - suit_gifs.append(gif) - - if not suit_gifs: - await UniMessage.text("GIF帧数太多了,懒得倒放😅").send() - return - - suit_image = suit_gifs[0] - - sequence = [f.copy() for f in ImageSequence.Iterator(suit_image)] - logger.info(f"GIF帧数: {len(sequence)}") - if len(sequence) <= 2: - await UniMessage.text("写入文件时发生未知错误").send() - return - - await UniMessage.text("ℹ正在翻转图片序列,请稍候").send() - - sequence.reverse() - - bio = BytesIO() - - sequence[0].save( - bio, - format="GIF", - save_all=True, - append_images=sequence[1:], - disposal=1, - loop=0 - ) - - bio.seek(0) - - await UniMessage.image(raw=bio.getvalue()).send() - - -def image_to_bytes(image: Image.Image, input_format: str) -> bytes: - with BytesIO() as bio: - image.save(bio, format=input_format) - return bio.getvalue() +from .handlers import re_gif # noqa: E402,F401 diff --git a/hexi/plugins/nonebot_plugin_regif/handlers/__init__.py b/hexi/plugins/nonebot_plugin_regif/handlers/__init__.py new file mode 100644 index 0000000..2c10ddc --- /dev/null +++ b/hexi/plugins/nonebot_plugin_regif/handlers/__init__.py @@ -0,0 +1,3 @@ +"""GIF 倒放 —— Trigger 层。""" + +from .reverse import re_gif # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_regif/handlers/reverse.py b/hexi/plugins/nonebot_plugin_regif/handlers/reverse.py new file mode 100644 index 0000000..611df3f --- /dev/null +++ b/hexi/plugins/nonebot_plugin_regif/handlers/reverse.py @@ -0,0 +1,46 @@ +"""GIF 倒放 —— 触发器(Trigger)层。""" + +from __future__ import annotations + +from nonebot import require +from nonebot.adapters.onebot.v11 import MessageEvent, Bot +from nonebot.log import logger +from nonebot.plugin.on import on_keyword +from nonebot_plugin_alconna import UniMessage + +from hexi.plugins.nonebot_plugin_hexi_core.message_utils import get_reply_message + +from ..services.gif import reverse_gif_bytes + +require("nonebot_plugin_alconna") + +re_gif = on_keyword({"倒放"}) + + +@re_gif.handle() +async def rev_gif(event: MessageEvent, bot: Bot): + # 情况1,用户对需要倒放的gif进行回复 + messages = get_reply_message(event) + await match_revgif(messages) + + +async def match_revgif(messages): + img_urls = [] + for message in messages: + logger.info(f"遍历消息: {message}") + if message.type != "image": + continue + url = message.data.get("url") + if url: + img_urls.append(url) + if not img_urls: + logger.info("消息中没有图片") + return + for url in img_urls: + logger.info(f"获取到的图片链接:{url}") + await UniMessage.text("ℹ正在翻转图片序列,请稍候").send() + data, err = await reverse_gif_bytes(img_urls) + if err: + await UniMessage.text(err).send() + return + await UniMessage.image(raw=data).send() diff --git a/hexi/plugins/nonebot_plugin_regif/services/__init__.py b/hexi/plugins/nonebot_plugin_regif/services/__init__.py new file mode 100644 index 0000000..7e000a9 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_regif/services/__init__.py @@ -0,0 +1,3 @@ +"""GIF 倒放 —— Service 层。""" + +from .gif import reverse_gif_bytes # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_regif/services/gif.py b/hexi/plugins/nonebot_plugin_regif/services/gif.py new file mode 100644 index 0000000..62fdc61 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_regif/services/gif.py @@ -0,0 +1,62 @@ +"""GIF 倒放 —— 业务逻辑(Service 层)。""" + +from __future__ import annotations + +from io import BytesIO + +import httpx +from PIL import Image, ImageSequence +from nonebot.log import logger + + +async def reverse_gif_bytes(image_urls: list[str]) -> tuple[bytes | None, str | None]: + """下载并翻转 GIF。 + + Returns: + (bytes, None) 成功; + (None, msg) 失败原因(无 GIF / 帧数过多 / 处理失败)。 + """ + gif_img = [] + async with httpx.AsyncClient(timeout=30) as client: + for image_url in image_urls: + try: + resp = await client.get(image_url) + resp.raise_for_status() + image = Image.open(BytesIO(resp.content)) + if getattr(image, "n_frames", 1) == 1: + continue + gif_img.append(image) + except Exception as e: # noqa: BLE001 + logger.warning(f"下载或解析图片失败: {e}") + + if not gif_img: + return None, "没有发现GIF图片" + + suit_gifs = [gif for gif in gif_img if gif.n_frames <= 400] + if not suit_gifs: + return None, "GIF帧数太多了,懒得倒放😅" + + suit_image = suit_gifs[0] + sequence = [f.copy() for f in ImageSequence.Iterator(suit_image)] + logger.info(f"GIF帧数: {len(sequence)}") + if len(sequence) <= 2: + return None, "写入文件时发生未知错误" + + sequence.reverse() + bio = BytesIO() + sequence[0].save( + bio, + format="GIF", + save_all=True, + append_images=sequence[1:], + disposal=1, + loop=0, + ) + bio.seek(0) + return bio.getvalue(), None + + +def image_to_bytes(image: Image.Image, input_format: str) -> bytes: + with BytesIO() as bio: + image.save(bio, format=input_format) + return bio.getvalue() diff --git a/hexi/plugins/nonebot_plugin_steam_info/__init__.py b/hexi/plugins/nonebot_plugin_steam_info/__init__.py index c448201..e645855 100644 --- a/hexi/plugins/nonebot_plugin_steam_info/__init__.py +++ b/hexi/plugins/nonebot_plugin_steam_info/__init__.py @@ -79,25 +79,6 @@ __plugin_meta__ = PluginMetadata( supported_adapters=inherit_supported_adapters("nonebot_plugin_alconna"), ) -help = on_command("steamhelp", aliases={"steam帮助"}, priority=10) -bind = on_command("steambind", aliases={"绑定steam"}, priority=10) -unbind = on_command("steamunbind", aliases={"解绑steam"}, priority=10) -info = on_command("steaminfo", aliases={"steam信息"}, priority=10) -# 谁在玩游戏:全群共享 CD,防一人狂点挤占 API 配额(steam.py 内另有总配额限频) -check = cooldown(30, scope="group", hint="群里刚有人查过,{secs} 秒后再试")( - on_command("steamcheck", aliases={"查看steam", "查steam", "谁在玩游戏"}, priority=10) -) -enable = on_command("steamenable", aliases={"启用steam"}, priority=10) -disable = on_command("steamdisable", aliases={"禁用steam"}, priority=10) -# 游戏时长表:单用户 15s CD -get_play_time = cooldown(15, hint="查询太频繁了,{secs} 秒后再试")( - on_command("steamplaytime", aliases={"游戏时长表"}, priority=10) -) -# 全量拉取 SteamDB 较重,仅限超级管理员触发 -update_steamdb = on_command( - "steamdbupdate", aliases={"更新steamdb"}, priority=10, permission=SUPERUSER -) - if hasattr(nonebot, "get_plugin_config"): config = nonebot.get_plugin_config(Config) else: @@ -535,430 +516,27 @@ if not config.steam_disable_broadcast_on_startup: else: logger.info("已禁用启动时的 Steam 播报") - -@help.handle() -async def help_handle(): - await help.finish(__plugin_meta__.usage) - - -@bind.handle() -async def bind_handle( - event: Event, target: Target = Depends(get_target), cmd_arg: Message = CommandArg() -): - parent_id = target.parent_id or target.id - - arg = cmd_arg.extract_plain_text() - - if not arg.isdigit(): - await bind.finish( - "请输入正确的 Steam ID 或 Steam好友代码,格式: steambind [Steam ID 或 Steam好友代码]" - ) - - steam_id = get_steam_id(arg) - - if user_data := bind_data.get(parent_id, event.get_user_id()): - user_data["steam_id"] = steam_id - bind_data.save() - - await bind.finish(f"已更新你的 Steam ID 为 {steam_id}") - else: - bind_data.add( - parent_id, - {"user_id": event.get_user_id(), "steam_id": steam_id, "nickname": None}, - ) - bind_data.save() - - await bind.finish(f"已绑定你的 Steam ID 为 {steam_id}") - - -@unbind.handle() -async def unbind_handle(event: Event, target: Target = Depends(get_target)): - parent_id = target.parent_id or target.id - user_id = event.get_user_id() - - if bind_data.get(parent_id, user_id) is not None: - bind_data.remove(parent_id, user_id) - bind_data.save() - - await unbind.finish("已解绑 Steam ID") - else: - await unbind.finish("未绑定 Steam ID") - - -@info.handle() -async def info_handle( - bot: Bot, - event: Event, - target: Target = Depends(get_target), - arg: Message = CommandArg(), -): - parent_id = target.parent_id or target.id - - uni_arg = await UniMessage.generate(message=arg, event=event, bot=bot) - at = uni_arg[At] - - if len(at) != 0: - user_id: str = at[0].target - user_data = bind_data.get(parent_id, user_id) - if user_data is None: - await info.finish("该用户未绑定 Steam ID") - steam_id = user_data["steam_id"] - steam_friend_code = str(int(steam_id) - STEAM_ID_OFFSET) - elif arg.extract_plain_text().strip() != "": - steam_id = int(arg.extract_plain_text().strip()) - if steam_id < STEAM_ID_OFFSET: - steam_friend_code = steam_id - steam_id += STEAM_ID_OFFSET - else: - steam_friend_code = steam_id - STEAM_ID_OFFSET - else: - user_data = bind_data.get(parent_id, event.get_user_id()) - - if user_data is None: - await info.finish( - "未绑定 Steam ID, 请使用 “steambind [Steam ID 或 Steam好友代码]” 绑定 Steam ID" - ) - - steam_id = user_data["steam_id"] - steam_friend_code = str(int(steam_id) - STEAM_ID_OFFSET) - - player_data = await get_user_data(steam_id, cache_path, config.proxy) - - # 游戏名本地化(中文名优先) - names = await get_game_cn_names( - [g.get("appid") for g in player_data["game_data"] if g.get("appid")], - db_path, - ) - for g in player_data["game_data"]: - g["game_name"] = localize_game_name(g["game_name"], g.get("appid"), names) - - draw_data = [ - { - "game_header": game["game_image"], - "game_name": game["game_name"], - "game_time": f"{game['play_time']} 小时", - "last_play_time": game["last_played"], - "achievements": game["achievements"], - "completed_achievement_number": game.get("completed_achievement_number"), - "total_achievement_number": game.get("total_achievement_number"), - } - for game in player_data["game_data"] - ] - - image = draw_player_status( - player_data["background"], - player_data["avatar"], - player_data["player_name"], - str(steam_friend_code), - player_data["description"], - player_data["recent_2_week_play_time"], - draw_data, - ) - - await info.finish( - await UniMessage( - Image(raw=image_to_bytes(image)), - ).export(bot) - ) - - -# 初始化计数器 +# 用户命令的 API key 轮询(与播报 key_select_2 独立) current_key_index_1 = 0 def key_select(): global current_key_index_1 - # 获取key列表 keys = config.steam_api_key - # 获取当前使用的 key - current_key: str = keys[current_key_index_1] - # 更新计数器 + current_key = keys[current_key_index_1] current_key_index_1 = (current_key_index_1 + 1) % len(keys) - return [current_key] -@check.handle() -async def check_handle( - bot: Bot, - target: Target = Depends(get_target), - arg: Message = CommandArg(), -): - if arg.extract_plain_text().strip() != "": - return None - - parent_id = target.parent_id or target.id - - steam_ids = bind_data.get_all(parent_id) - - current_key = key_select() - - logger.info(f"当前调用的key:{current_key}") - # 用户命令快速失败,不挤占播报配额 - steam_info = await get_steam_users_info( - steam_ids, current_key, config.proxy, wait=False - ) - if steam_info is None: - await check.finish("Steam API 请求过于频繁,请稍后再试") - - logger.debug(f"{parent_id} Players info: {steam_info}") - - # 游戏名本地化(中文名优先) - players = steam_info["response"]["players"] - names = await get_game_cn_names( - [int(p["gameid"]) for p in players if p.get("gameid")], - db_path, - ) - for p in players: - if p.get("gameid"): - p["gameextrainfo"] = localize_game_name( - p.get("gameextrainfo", ""), int(p["gameid"]), names - ) - - # 统计所有游玩中的游戏(单人也要显示游戏图标),商店页优先抓取 clienticon - game_ids: list[int] = [] - seen: set[int] = set() - for p in players: - if p.get("gameid"): - gid = int(p["gameid"]) - if gid not in seen: - seen.add(gid) - game_ids.append(gid) - game_icons = ( - await get_game_icons(game_ids, config.proxy, db_path) if game_ids else {} - ) - - # 后台用正在玩的 steamid 补剩余缺的 hash(不阻塞当前出图;商店页为主要手段) - asyncio.create_task(_fill_missing_icon_hashes(players)) - - parent_avatar, parent_name = await get_parent_info(bot, parent_id) - - steam_status_data = [] - for player in players: - data = await simplize_steam_player_data( - player, config.proxy, avatar_path, names - ) - entry = bind_data.get_by_steam_id(parent_id, player["steamid"]) - data["nickname"] = ( - await get_group_nickname(bot, parent_id, entry["user_id"]) - if entry is not None - else None - ) - data["game_icon"] = game_icons.get(data["gameid"]) - steam_status_data.append(data) - - image = draw_friends_status(parent_avatar, parent_name, steam_status_data) - - await target.send(UniMessage(Image(raw=image_to_bytes(image)))) - - -@enable.handle() -async def enable_handle(target: Target = Depends(get_target)): - parent_id = target.parent_id or target.id - - disable_parent_data.remove(parent_id) - disable_parent_data.save() - - await enable.finish("已启用 Steam 播报") - - -@disable.handle() -async def disable_handle(target: Target = Depends(get_target)): - parent_id = target.parent_id or target.id - - disable_parent_data.add(parent_id) - disable_parent_data.save() - - await disable.finish("已禁用 Steam 播报") - - -async def _auto_sync_game_names(): - """启动时自动同步游戏名映射表:未全量同步过则全量拉取,已标记完成则跳过""" - try: - if _is_full_sync_done(db_path): - logger.info("游戏名映射表已全量同步过,跳过启动同步") - return - api_key = config.steam_api_key[0] - count = await update_steamdb_apps(db_path, api_key) - logger.info(f"游戏名映射表首次同步完成: {count} 条") - except Exception as e: - logger.error(f"游戏名映射表启动同步失败: {e}") - - -@scheduler.scheduled_job("cron", hour=5, minute=0, id="sync_missing_games") -async def _sync_missing_games(): - """扫描绑定用户游戏库,自动补全映射表缺失的游戏 - - 英文名从 GetOwnedGames 响应直接取(零额外请求),中文名留给查询时按需补全。 - """ - try: - all_games: dict[str, str] = {} - all_icons: dict[int, str] = {} - for parent_id in bind_data.content.keys(): - for steam_id in bind_data.get_all(parent_id): - games = await fetch_play_time(steam_id) - if games is None: # API 配额不足,跳过该用户 - logger.warning( - f"Steam API 配额已满,跳过 {steam_id} 的游戏同步" - ) - continue - for g in games: - if g.get("appid"): - all_games.setdefault(str(g["appid"]), g["name"]) - if g.get("clienticon"): - all_icons.setdefault(int(g["appid"]), g["clienticon"]) - if not all_games: - return - known = _query_game_names(db_path, [int(a) for a in all_games]) - missing = { - aid: name for aid, name in all_games.items() if aid not in known - } - if missing: - _upsert_game_names( - db_path, - { - aid: {"name_en": name, "name_ch": ""} - for aid, name in missing.items() - }, - ) - logger.info(f"补全映射表缺失游戏: {len(missing)} 个") - if all_icons: - _upsert_game_icon_hashes(db_path, all_icons) - logger.info(f"补全映射表游戏图标: {len(all_icons)} 个") - except Exception as e: - logger.error(f"补全映射表缺失游戏失败: {e}") - - -@scheduler.scheduled_job( - "cron", hour=4, minute=30, id="sync_game_names" +# 触发器(handlers)在子包中 +from .handlers import ( # noqa: E402,F401 + bind, + check, + disable, + enable, + get_play_time, + help, + info, + unbind, + update_steamdb, ) -async def _daily_sync_game_names(): - """每日全量同步游戏名映射表(保证表内始终有全部游戏)""" - try: - api_key = config.steam_api_key[0] - count = await update_steamdb_apps(db_path, api_key) - logger.info(f"游戏名映射表每日全量同步完成: {count} 条") - except Exception as e: - logger.error(f"游戏名映射表每日同步失败: {e}") - - -async def _on_bot_connect(bot): - """bot 连接后后台执行映射表首次同步(不阻塞连接流程)""" - asyncio.create_task(_auto_sync_game_names()) - - -nonebot.get_driver().on_bot_connect(_on_bot_connect) - - -@update_steamdb.handle() -async def update_steamdb_handle(): - await update_steamdb.send("正在拉取 Steam 全量 app 列表...") - try: - api_key = config.steam_api_key[0] - count = await update_steamdb_apps(db_path, api_key) - except Exception as e: - logger.error(f"SteamDB 数据更新失败: {e}") - await update_steamdb.finish(f"SteamDB 数据更新失败: {e}") - if count: - await update_steamdb.finish(f"Steam 数据更新完成,共 {count} 个游戏") - else: - await update_steamdb.finish("Steam 数据拉取失败,稍后重试") - - -@get_play_time.handle() -async def get_play_time_handle( - bot: Bot, - event: MessageEvent, - target: Target = Depends(get_target), - cmd_arg: Message = CommandArg(), -): - parent_id = target.parent_id or target.id - user_data = None - - logger.info(f"游玩时长表:进入处理, parent={parent_id}") - arg_text = cmd_arg.extract_plain_text().strip() - - if arg_text: - if not arg_text.isdigit(): - await get_play_time.finish( - "请输入正确的 Steam ID 或 Steam好友代码,格式: steamplaytime [Steam ID 或 Steam好友代码]" - ) - steam_id = get_steam_id(arg_text) - else: - user_data = bind_data.get(parent_id, event.get_user_id()) - if user_data is None: - await get_play_time.finish( - "未绑定 Steam ID,请使用 steamplaytime [Steam ID 或 Steam好友代码] 查询,或先使用 steambind 绑定" - ) - steam_id = user_data["steam_id"] - await get_play_time.send("正在获取数据,请耐心等待") - logger.info(f"游玩时长表:开始获取数据, steam_id={steam_id}") - games = await fetch_play_time(steam_id) - if games is None: - await get_play_time.finish("Steam API 请求过于频繁,请稍后再试") - logger.info(f"游玩时长表:数据获取完成, 共 {len(games)} 款游戏") - - if not games: - await get_play_time.finish("没有获取到游玩数据(游戏可能未公开)") - - # 顺手把 GetOwnedGames 返回的 clienticon hash 写入映射表,供 steamcheck 图标使用 - icon_entries = { - int(g["appid"]): g.get("clienticon") - for g in games - if g.get("appid") and g.get("clienticon") - } - if icon_entries: - _upsert_game_icon_hashes(db_path, icon_entries) - - # 游戏名本地化:仅查本地映射表,有中文用中文,没有保持 API 原始名(不联网补全) - appids = [g["appid"] for g in games if g.get("appid")] - game_map = _query_game_names(db_path, appids) if appids else {} - names = { - int(aid): entry["name_ch"] - for aid, entry in game_map.items() - if entry.get("name_ch") - } - for g in games: - g["name"] = localize_game_name(g["name"], g.get("appid"), names) - - # 分离已游玩(表格/饼图)与全量(柱状图按时长分段,含 0 时长) - played = [g for g in games if g["playtime_hours"] > 0] - if not played: - await get_play_time.finish("没有游玩记录(游戏可能未公开或全部未游玩)") - for i, g in enumerate(played, 1): - g["rank"] = i - - # 渲染 HTML 图片(Playwright);失败则提示并结束 - try: - from .html_playtime import render_play_time_table - - # 头像与昵称:Steam 昵称常显,插件昵称(群昵称)设置了才显示 - steam_name, plugin_nick, avatar = "", "", None - try: - player_data = await get_user_data(steam_id, cache_path, config.proxy) - steam_name = player_data.get("player_name", "") - avatar = player_data.get("avatar") - except Exception as e: - logger.warning(f"获取玩家资料失败,省略头像昵称: {e}") - if user_data: - plugin_nick = await get_group_nickname( - bot, parent_id, user_data["user_id"] - ) - - logger.info(f"游玩时长表:开始渲染 HTML 图片, steam={steam_name}, nick={plugin_nick}") - img_bytes = await render_play_time_table( - played, games, steam_name, plugin_nick, avatar, - theme=config.steam_playtime_theme, - ) - logger.info(f"游玩时长表:渲染完成, {len(img_bytes)} bytes") - except Exception as e: - logger.error(f"渲染游玩时长表图片失败: {e}", exc_info=True) - await get_play_time.finish("游玩时长表渲染失败,请稍后重试") - - # 发送移出 try:finish 成功后抛的 StopPropagation 不能被 except 捕获 - # (否则图片发出后还会再补一句"渲染失败"),与 info 指令一致先 export - # 回复原指令消息,群消息多时不易混淆 - uni_msg = MessageSegment.reply(event.message_id) + await UniMessage( - Image(raw=img_bytes) - ).export(bot) - await get_play_time.finish(uni_msg) diff --git a/hexi/plugins/nonebot_plugin_steam_info/handlers/__init__.py b/hexi/plugins/nonebot_plugin_steam_info/handlers/__init__.py new file mode 100644 index 0000000..9c8cde6 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_steam_info/handlers/__init__.py @@ -0,0 +1,3 @@ +"""Steam 信息 —— Trigger 层。""" + +from .steam import bind, check, disable, enable, get_play_time, help, info, unbind, update_steamdb # noqa: F401 diff --git a/hexi/plugins/nonebot_plugin_steam_info/handlers/steam.py b/hexi/plugins/nonebot_plugin_steam_info/handlers/steam.py new file mode 100644 index 0000000..6f45f1b --- /dev/null +++ b/hexi/plugins/nonebot_plugin_steam_info/handlers/steam.py @@ -0,0 +1,289 @@ +"""Steam 信息 —— 触发器(Trigger)层。""" + +from __future__ import annotations + +import asyncio + +from nonebot import logger, on_command, require +from nonebot.adapters import Message, Event +from nonebot.adapters.onebot.v11 import Bot, MessageEvent, MessageSegment +from nonebot.params import CommandArg, Depends +from nonebot.permission import SUPERUSER +from nonebot_plugin_alconna import At, Image, Target, Text, UniMessage + +from hexi.plugins.nonebot_plugin_hexi_core.cooldown import cooldown + +# 业务/状态在插件根 __init__ 中(本插件为社区插件,服务层保留在根模块) +from .. import ( + __plugin_meta__, + STEAM_ID_OFFSET, + avatar_path, + bind_data, + cache_path, + config, + db_path, + disable_parent_data, + draw_friends_status, + draw_player_status, + fetch_play_time, + get_game_cn_names, + get_game_icons, + get_group_nickname, + get_parent_info, + get_steam_id, + get_steam_users_info, + get_target, + get_user_data, + image_to_bytes, + key_select, + key_select_2, + localize_game_name, + parent_data, + simplize_steam_player_data, + steam_info_data, + _fill_missing_icon_hashes, + _query_game_names, + _upsert_game_icon_hashes, + update_steamdb_apps, +) + +help = on_command("steamhelp", aliases={"steam帮助"}, priority=10) +bind = on_command("steambind", aliases={"绑定steam"}, priority=10) +unbind = on_command("steamunbind", aliases={"解绑steam"}, priority=10) +info = on_command("steaminfo", aliases={"steam信息"}, priority=10) +check = cooldown(30, scope="group", hint="群里刚有人查过,{secs} 秒后再试")( + on_command("steamcheck", aliases={"查看steam", "查steam", "谁在玩游戏"}, priority=10) +) +enable = on_command("steamenable", aliases={"启用steam"}, priority=10) +disable = on_command("steamdisable", aliases={"禁用steam"}, priority=10) +get_play_time = cooldown(15, hint="查询太频繁了,{secs} 秒后再试")( + on_command("steamplaytime", aliases={"游戏时长表"}, priority=10) +) +update_steamdb = on_command( + "steamdbupdate", aliases={"更新steamdb"}, priority=10, permission=SUPERUSER +) + + +@help.handle() +async def help_handle(): + await help.finish(__plugin_meta__.usage) + + +@bind.handle() +async def bind_handle(event: Event, target: Target = Depends(get_target), cmd_arg: Message = CommandArg()): + parent_id = target.parent_id or target.id + arg = cmd_arg.extract_plain_text() + if not arg.isdigit(): + await bind.finish( + "请输入正确的 Steam ID 或 Steam好友代码,格式: steambind [Steam ID 或 Steam好友代码]" + ) + steam_id = get_steam_id(arg) + if user_data := bind_data.get(parent_id, event.get_user_id()): + user_data["steam_id"] = steam_id + bind_data.save() + await bind.finish(f"已更新你的 Steam ID 为 {steam_id}") + else: + bind_data.add( + parent_id, + {"user_id": event.get_user_id(), "steam_id": steam_id, "nickname": None}, + ) + bind_data.save() + await bind.finish(f"已绑定你的 Steam ID 为 {steam_id}") + + +@unbind.handle() +async def unbind_handle(event: Event, target: Target = Depends(get_target)): + parent_id = target.parent_id or target.id + user_id = event.get_user_id() + if bind_data.get(parent_id, user_id) is not None: + bind_data.remove(parent_id, user_id) + bind_data.save() + await unbind.finish("已解绑 Steam ID") + else: + await unbind.finish("未绑定 Steam ID") + + +@info.handle() +async def info_handle(bot: Bot, event: Event, target: Target = Depends(get_target), arg: Message = CommandArg()): + parent_id = target.parent_id or target.id + uni_arg = await UniMessage.generate(message=arg, event=event, bot=bot) + at = uni_arg[At] + if len(at) != 0: + user_id = at[0].target + user_data = bind_data.get(parent_id, user_id) + if user_data is None: + await info.finish("该用户未绑定 Steam ID") + steam_id = user_data["steam_id"] + steam_friend_code = str(int(steam_id) - STEAM_ID_OFFSET) + elif arg.extract_plain_text().strip() != "": + steam_id = int(arg.extract_plain_text().strip()) + if steam_id < STEAM_ID_OFFSET: + steam_friend_code = steam_id + steam_id += STEAM_ID_OFFSET + else: + steam_friend_code = steam_id - STEAM_ID_OFFSET + else: + user_data = bind_data.get(parent_id, event.get_user_id()) + if user_data is None: + await info.finish( + "未绑定 Steam ID, 请使用 “steambind [Steam ID 或 Steam好友代码]” 绑定 Steam ID" + ) + steam_id = user_data["steam_id"] + steam_friend_code = str(int(steam_id) - STEAM_ID_OFFSET) + + player_data = await get_user_data(steam_id, cache_path, config.proxy) + names = await get_game_cn_names( + [g.get("appid") for g in player_data["game_data"] if g.get("appid")], + db_path, + ) + for g in player_data["game_data"]: + g["game_name"] = localize_game_name(g["game_name"], g.get("appid"), names) + draw_data = [ + { + "game_header": game["game_image"], + "game_name": game["game_name"], + "game_time": f"{game['play_time']} 小时", + "last_play_time": game["last_played"], + "achievements": game["achievements"], + "completed_achievement_number": game.get("completed_achievement_number"), + "total_achievement_number": game.get("total_achievement_number"), + } + for game in player_data["game_data"] + ] + image = draw_player_status( + player_data["background"], player_data["avatar"], player_data["player_name"], + str(steam_friend_code), player_data["description"], + player_data["recent_2_week_play_time"], draw_data, + ) + await info.finish(await UniMessage(Image(raw=image_to_bytes(image))).export(bot)) + + +@check.handle() +async def check_handle(bot: Bot, target: Target = Depends(get_target), arg: Message = CommandArg()): + if arg.extract_plain_text().strip() != "": + return None + parent_id = target.parent_id or target.id + steam_ids = bind_data.get_all(parent_id) + current_key = key_select() + logger.info(f"当前调用的key:{current_key}") + steam_info = await get_steam_users_info(steam_ids, current_key, config.proxy, wait=False) + if steam_info is None: + await check.finish("Steam API 请求过于频繁,请稍后再试") + players = steam_info["response"]["players"] + names = await get_game_cn_names( + [int(p["gameid"]) for p in players if p.get("gameid")], db_path, + ) + for p in players: + if p.get("gameid"): + p["gameextrainfo"] = localize_game_name(p.get("gameextrainfo", ""), int(p["gameid"]), names) + game_ids: list[int] = [] + seen: set[int] = set() + for p in players: + if p.get("gameid"): + gid = int(p["gameid"]) + if gid not in seen: + seen.add(gid) + game_ids.append(gid) + game_icons = await get_game_icons(game_ids, config.proxy, db_path) if game_ids else {} + asyncio.create_task(_fill_missing_icon_hashes(players)) + parent_avatar, parent_name = await get_parent_info(bot, parent_id) + steam_status_data = [] + for player in players: + data = await simplize_steam_player_data(player, config.proxy, avatar_path, names) + entry = bind_data.get_by_steam_id(parent_id, player["steamid"]) + data["nickname"] = await get_group_nickname(bot, parent_id, entry["user_id"]) if entry is not None else None + data["game_icon"] = game_icons.get(data["gameid"]) + steam_status_data.append(data) + image = draw_friends_status(parent_avatar, parent_name, steam_status_data) + await target.send(UniMessage(Image(raw=image_to_bytes(image)))) + + +@enable.handle() +async def enable_handle(target: Target = Depends(get_target)): + parent_id = target.parent_id or target.id + disable_parent_data.remove(parent_id) + disable_parent_data.save() + await enable.finish("已启用 Steam 播报") + + +@disable.handle() +async def disable_handle(target: Target = Depends(get_target)): + parent_id = target.parent_id or target.id + disable_parent_data.add(parent_id) + disable_parent_data.save() + await disable.finish("已禁用 Steam 播报") + + +@update_steamdb.handle() +async def update_steamdb_handle(): + await update_steamdb.send("正在拉取 Steam 全量 app 列表...") + try: + api_key = config.steam_api_key[0] + count = await update_steamdb_apps(db_path, api_key) + except Exception as e: + logger.error(f"SteamDB 数据更新失败: {e}") + await update_steamdb.finish(f"SteamDB 数据更新失败: {e}") + if count: + await update_steamdb.finish(f"Steam 数据更新完成,共 {count} 个游戏") + else: + await update_steamdb.finish("Steam 数据拉取失败,稍后重试") + + +@get_play_time.handle() +async def get_play_time_handle(bot: Bot, event: MessageEvent, target: Target = Depends(get_target), cmd_arg: Message = CommandArg()): + parent_id = target.parent_id or target.id + user_data = None + logger.info(f"游玩时长表:进入处理, parent={parent_id}") + arg_text = cmd_arg.extract_plain_text().strip() + if arg_text: + if not arg_text.isdigit(): + await get_play_time.finish( + "请输入正确的 Steam ID 或 Steam好友代码,格式: steamplaytime [Steam ID 或 Steam好友代码]" + ) + steam_id = get_steam_id(arg_text) + else: + user_data = bind_data.get(parent_id, event.get_user_id()) + if user_data is None: + await get_play_time.finish( + "未绑定 Steam ID,请使用 steamplaytime [Steam ID 或 Steam好友代码] 查询,或先使用 steambind 绑定" + ) + steam_id = user_data["steam_id"] + await get_play_time.send("正在获取数据,请耐心等待") + logger.info(f"游玩时长表:开始获取数据, steam_id={steam_id}") + games = await fetch_play_time(steam_id) + if games is None: + await get_play_time.finish("Steam API 请求过于频繁,请稍后再试") + if not games: + await get_play_time.finish("没有获取到游玩数据(游戏可能未公开)") + icon_entries = {int(g["appid"]): g.get("clienticon") for g in games if g.get("appid") and g.get("clienticon")} + if icon_entries: + _upsert_game_icon_hashes(db_path, icon_entries) + appids = [g["appid"] for g in games if g.get("appid")] + game_map = _query_game_names(db_path, appids) if appids else {} + names = {int(aid): entry["name_ch"] for aid, entry in game_map.items() if entry.get("name_ch")} + for g in games: + g["name"] = localize_game_name(g["name"], g.get("appid"), names) + played = [g for g in games if g["playtime_hours"] > 0] + if not played: + await get_play_time.finish("没有游玩记录(游戏可能未公开或全部未游玩)") + for i, g in enumerate(played, 1): + g["rank"] = i + try: + from ..html_playtime import render_play_time_table + steam_name, plugin_nick, avatar = "", "", None + try: + player_data = await get_user_data(steam_id, cache_path, config.proxy) + steam_name = player_data.get("player_name", "") + avatar = player_data.get("avatar") + except Exception as e: + logger.warning(f"获取玩家资料失败,省略头像昵称: {e}") + if user_data: + plugin_nick = await get_group_nickname(bot, parent_id, user_data["user_id"]) + img_bytes = await render_play_time_table( + played, games, steam_name, plugin_nick, avatar, theme=config.steam_playtime_theme, + ) + except Exception as e: + logger.error(f"渲染游玩时长表图片失败: {e}", exc_info=True) + await get_play_time.finish("游玩时长表渲染失败,请稍后重试") + uni_msg = MessageSegment.reply(event.message_id) + await UniMessage(Image(raw=img_bytes)).export(bot) + await get_play_time.finish(uni_msg) diff --git a/hexi/plugins/nonebot_plugin_video_analysis/config.py b/hexi/plugins/nonebot_plugin_video_analysis/config.py index 16d32b6..1f45017 100644 --- a/hexi/plugins/nonebot_plugin_video_analysis/config.py +++ b/hexi/plugins/nonebot_plugin_video_analysis/config.py @@ -1,7 +1,7 @@ """统一配置注册:把插件配置按文档标准接入 hexi.web_config(Web 可读可改)。 - temp 清理配置(env pydantic) → register_model_config -- S3 存储配置(原硬编码在 storage/s3.py) → register_config_items(store=s3 模块) +- S3 存储配置(原硬编码在 services/storage/s3.py) → register_config_items(store=s3 模块) - 群分组配置(data/list.json) → register_config_items(type=json, nosave) """ @@ -10,7 +10,7 @@ from __future__ import annotations from hexi.config_standard import register_config_items, register_model_config from . import cleanup, list_proc # noqa: F401 -from .storage import s3 as _s3mod +from .services.storage import s3 as _s3mod # 插件模块名 = plugin_id(与 NoneBot 模块名一致) _PLUGIN_ID = __package__ diff --git a/hexi/plugins/nonebot_plugin_video_analysis/handlers/douyin.py b/hexi/plugins/nonebot_plugin_video_analysis/handlers/douyin.py index 971764f..b9dd766 100644 --- a/hexi/plugins/nonebot_plugin_video_analysis/handlers/douyin.py +++ b/hexi/plugins/nonebot_plugin_video_analysis/handlers/douyin.py @@ -1,6 +1,5 @@ """抖音视频/图文解析编排层""" -import os import re import urllib.parse from pathlib import Path @@ -9,19 +8,15 @@ from typing import Optional, Union import httpx from nonebot import logger -from ..fetchers.douyin_api import fetch_douyin_content -from ..fetchers.douyin_ssr import MOBILE_UA, fetch_douyin_note_ssr +from ..services.fetchers.douyin_api import fetch_douyin_content +from ..services.fetchers.douyin_ssr import MOBILE_UA, fetch_douyin_note_ssr from ..models import DouyinFetchError -from ..utils import parse_netscape_cookies +from ..utils import get_data_dir, parse_netscape_cookies from .sender import PendingMedia, _as_paths SHORT_LINK_PATTERN = re.compile(r"(v\.douyin\.com/[A-Za-z0-9_\-]+)") -def _get_data_dir() -> str: - return os.path.join(os.path.dirname(__file__), "..", "data") - - async def _resolve_short_link(url: str) -> Optional[str]: """短链重定向:httpx 取 Location(最多 3 跳),失败返回 None""" try: @@ -83,7 +78,7 @@ async def parse_douyin( try: is_img_post = False - cookies_path = os.path.join(_get_data_dir(), "cookies.txt") + cookies_path = get_data_dir() / "cookies.txt" cookies = parse_netscape_cookies(cookies_path) # 先试 SSR(秒级、免浏览器),失败一律回退 playwright 链路。 # 2026-08-13 起抖音对 iesdouyin SSR 端点整体降级(登录态也拿不到 diff --git a/hexi/plugins/nonebot_plugin_video_analysis/handlers/entry.py b/hexi/plugins/nonebot_plugin_video_analysis/handlers/entry.py index 0e875d1..4d56cf0 100644 --- a/hexi/plugins/nonebot_plugin_video_analysis/handlers/entry.py +++ b/hexi/plugins/nonebot_plugin_video_analysis/handlers/entry.py @@ -3,7 +3,6 @@ from __future__ import annotations import html -import os import re from typing import Optional @@ -13,16 +12,13 @@ from nonebot.rule import to_me from nonebot_plugin_alconna import UniMessage from nonebot_plugin_alconna.uniseg import get_target -from ..fetchers.bilibili_content import fetch_bilibili_content, resolve_short_link -from ..fetchers.rednote_content import fetch_rednote_content +from ..services.fetchers.bilibili_content import fetch_bilibili_content, resolve_short_link +from ..services.fetchers.rednote_content import fetch_rednote_content from .douyin import parse_douyin, process_douyin_res from .sender import PendingMedia, send_pending_media from .universal import handle_universal from ..list_proc import AUTO_LINK_KEYWORDS, get_group_auto_link, verify_user -BASE_DIR = os.path.dirname(os.path.abspath(__file__)) -FILE_PATH = os.path.join(BASE_DIR, "data", "list.json") - URL_PATTERN = re.compile(r"(https?://\S+)") XCX_PATTERN = r"QQ小程序(?:&#93;|]|\])" diff --git a/hexi/plugins/nonebot_plugin_video_analysis/handlers/sender.py b/hexi/plugins/nonebot_plugin_video_analysis/handlers/sender.py index 1a58e26..dc2ad89 100644 --- a/hexi/plugins/nonebot_plugin_video_analysis/handlers/sender.py +++ b/hexi/plugins/nonebot_plugin_video_analysis/handlers/sender.py @@ -15,7 +15,7 @@ from typing import Optional, Union from nonebot import logger from nonebot_plugin_alconna import UniMessage -from ..storage.s3 import upload_with_plan +from ..services.storage.s3 import upload_with_plan @dataclass diff --git a/hexi/plugins/nonebot_plugin_video_analysis/handlers/universal.py b/hexi/plugins/nonebot_plugin_video_analysis/handlers/universal.py index 43d0d87..f647043 100644 --- a/hexi/plugins/nonebot_plugin_video_analysis/handlers/universal.py +++ b/hexi/plugins/nonebot_plugin_video_analysis/handlers/universal.py @@ -6,7 +6,7 @@ from typing import Optional from nonebot import logger from nonebot_plugin_alconna import UniMessage -from ..fetchers.video_downloader import download_video +from ..services.fetchers.video_downloader import download_video from .sender import PendingMedia, _as_paths diff --git a/hexi/plugins/nonebot_plugin_video_analysis/services/__init__.py b/hexi/plugins/nonebot_plugin_video_analysis/services/__init__.py new file mode 100644 index 0000000..b18f1c3 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_video_analysis/services/__init__.py @@ -0,0 +1 @@ +# video_analysis —— Service 层。 diff --git a/hexi/plugins/nonebot_plugin_video_analysis/storage/__init__.py b/hexi/plugins/nonebot_plugin_video_analysis/services/fetchers/__init__.py similarity index 100% rename from hexi/plugins/nonebot_plugin_video_analysis/storage/__init__.py rename to hexi/plugins/nonebot_plugin_video_analysis/services/fetchers/__init__.py diff --git a/hexi/plugins/nonebot_plugin_video_analysis/fetchers/bilibili_content.py b/hexi/plugins/nonebot_plugin_video_analysis/services/fetchers/bilibili_content.py similarity index 98% rename from hexi/plugins/nonebot_plugin_video_analysis/fetchers/bilibili_content.py rename to hexi/plugins/nonebot_plugin_video_analysis/services/fetchers/bilibili_content.py index d33ac86..ec79342 100644 --- a/hexi/plugins/nonebot_plugin_video_analysis/fetchers/bilibili_content.py +++ b/hexi/plugins/nonebot_plugin_video_analysis/services/fetchers/bilibili_content.py @@ -21,10 +21,10 @@ from typing import Optional, Union from nonebot import logger -from ..models import ContentFetchError -from ..utils import parse_netscape_cookies, slugify +from ...models import ContentFetchError +from ...utils import get_data_dir, parse_netscape_cookies, slugify -DATA_DIR = Path(__file__).resolve().parent.parent / "data" +DATA_DIR = get_data_dir() BILI_UA = ( "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 " diff --git a/hexi/plugins/nonebot_plugin_video_analysis/fetchers/douyin_api.py b/hexi/plugins/nonebot_plugin_video_analysis/services/fetchers/douyin_api.py similarity index 99% rename from hexi/plugins/nonebot_plugin_video_analysis/fetchers/douyin_api.py rename to hexi/plugins/nonebot_plugin_video_analysis/services/fetchers/douyin_api.py index d04cf55..3547c0a 100644 --- a/hexi/plugins/nonebot_plugin_video_analysis/fetchers/douyin_api.py +++ b/hexi/plugins/nonebot_plugin_video_analysis/services/fetchers/douyin_api.py @@ -9,8 +9,8 @@ import httpx from nonebot import logger from playwright.async_api import async_playwright -from ..models import DouyinFetchError -from ..utils import ensure_unique_path, get_temp_root +from ...models import DouyinFetchError +from ...utils import ensure_unique_path, get_temp_root from .douyin_parser import ( ParsedDouyinContent, extract_trailing_digits, diff --git a/hexi/plugins/nonebot_plugin_video_analysis/fetchers/douyin_parser.py b/hexi/plugins/nonebot_plugin_video_analysis/services/fetchers/douyin_parser.py similarity index 99% rename from hexi/plugins/nonebot_plugin_video_analysis/fetchers/douyin_parser.py rename to hexi/plugins/nonebot_plugin_video_analysis/services/fetchers/douyin_parser.py index 209652b..c8c0758 100644 --- a/hexi/plugins/nonebot_plugin_video_analysis/fetchers/douyin_parser.py +++ b/hexi/plugins/nonebot_plugin_video_analysis/services/fetchers/douyin_parser.py @@ -9,8 +9,8 @@ from typing import Dict, List, Optional from nonebot import logger -from ..models import DouyinFetchError -from ..utils import slugify +from ...models import DouyinFetchError +from ...utils import slugify # ============================= 数据结构 ============================= diff --git a/hexi/plugins/nonebot_plugin_video_analysis/fetchers/douyin_ssr.py b/hexi/plugins/nonebot_plugin_video_analysis/services/fetchers/douyin_ssr.py similarity index 98% rename from hexi/plugins/nonebot_plugin_video_analysis/fetchers/douyin_ssr.py rename to hexi/plugins/nonebot_plugin_video_analysis/services/fetchers/douyin_ssr.py index ef36fe3..e805852 100644 --- a/hexi/plugins/nonebot_plugin_video_analysis/fetchers/douyin_ssr.py +++ b/hexi/plugins/nonebot_plugin_video_analysis/services/fetchers/douyin_ssr.py @@ -19,8 +19,8 @@ from typing import List, Optional import httpx from nonebot import logger -from ..models import DouyinFetchError -from ..utils import get_temp_root +from ...models import DouyinFetchError +from ...utils import get_temp_root from .douyin_api import _process_animated_note, _process_note_with_parsed from .douyin_parser import parse_douyin_response, parse_note_images, parse_ssr_page diff --git a/hexi/plugins/nonebot_plugin_video_analysis/fetchers/rednote_content.py b/hexi/plugins/nonebot_plugin_video_analysis/services/fetchers/rednote_content.py similarity index 98% rename from hexi/plugins/nonebot_plugin_video_analysis/fetchers/rednote_content.py rename to hexi/plugins/nonebot_plugin_video_analysis/services/fetchers/rednote_content.py index f6ae886..9f33b1c 100644 --- a/hexi/plugins/nonebot_plugin_video_analysis/fetchers/rednote_content.py +++ b/hexi/plugins/nonebot_plugin_video_analysis/services/fetchers/rednote_content.py @@ -27,10 +27,10 @@ from typing import Optional, Union from nonebot import logger -from ..models import ContentFetchError -from ..utils import get_temp_root, parse_netscape_cookies, slugify +from ...models import ContentFetchError +from ...utils import get_data_dir, get_temp_root, parse_netscape_cookies, slugify -DATA_DIR = Path(__file__).resolve().parent.parent / "data" +DATA_DIR = get_data_dir() REDNOTE_UA = ( "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 " diff --git a/hexi/plugins/nonebot_plugin_video_analysis/fetchers/video_downloader.py b/hexi/plugins/nonebot_plugin_video_analysis/services/fetchers/video_downloader.py similarity index 97% rename from hexi/plugins/nonebot_plugin_video_analysis/fetchers/video_downloader.py rename to hexi/plugins/nonebot_plugin_video_analysis/services/fetchers/video_downloader.py index 98f5d81..0ee3231 100644 --- a/hexi/plugins/nonebot_plugin_video_analysis/fetchers/video_downloader.py +++ b/hexi/plugins/nonebot_plugin_video_analysis/services/fetchers/video_downloader.py @@ -14,7 +14,7 @@ from nonebot import logger from yt_dlp import YoutubeDL from yt_dlp.utils import DownloadError -from ..utils import get_temp_root, slugify, ensure_unique_path +from ...utils import get_data_dir, get_temp_root, slugify, ensure_unique_path def detect_platform(url: str) -> str: @@ -49,11 +49,6 @@ def get_ffmpeg_path() -> str: return "ffmpeg" -def _get_data_dir() -> Path: - """获取 data/ 目录路径""" - return Path(__file__).resolve().parent.parent / "data" - - async def _retry_download( loop: asyncio.AbstractEventLoop, url: str, @@ -154,7 +149,7 @@ async def download_video(url: str) -> Optional[Path]: "ffmpeg_location": get_ffmpeg_path(), } - cookie_path = _get_data_dir() / "cookies.txt" + cookie_path = get_data_dir() / "cookies.txt" if platform in ("bilibili", "twitter", "youtube"): if not cookie_path.exists(): diff --git a/hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/image/.gitkeep b/hexi/plugins/nonebot_plugin_video_analysis/services/storage/__init__.py similarity index 100% rename from hexi/plugins/nonebot_plugin_group_tools/res/img/image-generate/image_data/image/.gitkeep rename to hexi/plugins/nonebot_plugin_video_analysis/services/storage/__init__.py diff --git a/hexi/plugins/nonebot_plugin_video_analysis/storage/s3.py b/hexi/plugins/nonebot_plugin_video_analysis/services/storage/s3.py similarity index 100% rename from hexi/plugins/nonebot_plugin_video_analysis/storage/s3.py rename to hexi/plugins/nonebot_plugin_video_analysis/services/storage/s3.py diff --git a/hexi/plugins/nonebot_plugin_video_analysis/utils.py b/hexi/plugins/nonebot_plugin_video_analysis/utils.py index 9bb40ed..d6e22dd 100644 --- a/hexi/plugins/nonebot_plugin_video_analysis/utils.py +++ b/hexi/plugins/nonebot_plugin_video_analysis/utils.py @@ -5,6 +5,15 @@ from time import strftime, localtime from typing import List +def get_data_dir() -> Path: + """插件 data 目录:.../nonebot_plugin_video_analysis/data + + 注意 utils.py 位于插件根目录,.parent 即插件根,因此这里写死回到 + 插件自身 data/(cookies.txt / list.json / temp 都在此处)。 + """ + return Path(__file__).resolve().parent / "data" + + def get_temp_root(sub: str = "") -> Path: """插件媒体临时目录:data/temp[/sub] — 下载的媒体先进这里 diff --git a/hexi/plugins/nonebot_plugin_voice_trans/__init__.py b/hexi/plugins/nonebot_plugin_voice_trans/__init__.py deleted file mode 100644 index a3fc0c1..0000000 --- a/hexi/plugins/nonebot_plugin_voice_trans/__init__.py +++ /dev/null @@ -1,66 +0,0 @@ -from gradio_client import Client, file, handle_file -import asyncio -import base64 -import io -import json -import os -from datetime import datetime -from nonebot import logger -from PIL import Image, ImageOps, ImageDraw, ImageFont -from nonebot.internal.params import ArgPlainText -from nonebot.params import CommandArg -from nonebot.typing import T_State -from playwright.async_api import async_playwright -from nonebot import on_command -from nonebot.adapters.onebot.v11 import MessageEvent, Bot, MessageSegment, GroupMessageEvent, Message -from nonebot.plugin import PluginMetadata -from typing import Optional, Union -from nonebot.matcher import Matcher - -__plugin_meta__ = PluginMetadata( - name="语音合成", - description="太好玩了", - usage="语音合成", - type="application", - extra={ - - } -) - -voice = on_command("voice", aliases={"语音合成"}) - - -@voice.handle() -async def make_voice(ev: MessageEvent, rgs: Message = CommandArg()): - text = rgs.extract_plain_text() - if text is None: - await voice.finish("缺少文本") - return - await voice.send("生成中...请耐心等待") - client = Client("http://localhost:9872/") - result = client.predict( - text=f"{text}", - text_lang="中文", - ref_audio_path=handle_file( - "D:\RVC\LJ\雷军_年度演讲.wav"), - aux_ref_audio_paths=[], - prompt_text="全球今天的消费者买手机,每六个人至少有一个人买的是小米手机", - prompt_lang="中文", - top_k=15, - top_p=1, - temperature=1, - text_split_method="按标点符号切", - batch_size=20, - speed_factor=1, - ref_text_free=False, - split_bucket=True, - fragment_interval=0.25, - seed=-1, - keep_random=True, - parallel_infer=True, - repetition_penalty=1.35, - api_name="/inference" - ) - audio_path = result[0] - message = MessageSegment.record(audio_path) - await voice.finish(message) diff --git a/hexi/plugins/nonebot_plugin_web_hub/__init__.py b/hexi/plugins/nonebot_plugin_web_hub/__init__.py index 23dc054..4a126f2 100644 --- a/hexi/plugins/nonebot_plugin_web_hub/__init__.py +++ b/hexi/plugins/nonebot_plugin_web_hub/__init__.py @@ -9,15 +9,25 @@ from __future__ import annotations from pathlib import Path +import asyncio +import json +import logging as _logging +import os +import socket +import subprocess +import sys +import threading +import time from fastapi import Depends, FastAPI, HTTPException, status -from fastapi.responses import FileResponse, HTMLResponse +from fastapi.responses import FileResponse, HTMLResponse, StreamingResponse from fastapi.security import OAuth2PasswordRequestForm from pydantic import BaseModel from starlette.staticfiles import StaticFiles from nonebot import get_driver, logger from nonebot.adapters.onebot.v11 import Adapter +from nonebot.plugin import PluginMetadata from hexi.web_auth import ( authenticate, @@ -33,6 +43,13 @@ from hexi.web_plugin_registry import get_web_plugin_builder, list_web_plugins from .dashboard import collect_dashboard +__plugin_meta__ = PluginMetadata( + name="HeXi Web Hub", + description="统一 Web 管理系统(/hub):自动聚合所有注册过的 Web 插件", + usage="/hub 进入管理台", + type="application", +) + basic_path = Path(__file__).resolve().parent # hexi/web 是统一 Web 管理台前端(hexi/web/dist),不是插件目录下的 web WEB_DIST = Path(__file__).resolve().parents[2] / "web" / "dist" @@ -40,6 +57,88 @@ WEB_DIST = Path(__file__).resolve().parents[2] / "web" / "dist" # 管理台自身版本号(展示在设置页「关于」处) HUB_VERSION = "0.1.0" +# 仓库根目录(bot.py 所在)与 bot 端口 +_REPO_ROOT = Path(__file__).resolve().parents[3] +_BOT_PORT = 39697 + + +def _spawn_bot() -> None: + """以分离进程方式拉起 bot.py:等旧实例释放端口后接管,日志追加到 _bot_run.log。""" + try: + log_fp = open(_REPO_ROOT / "_bot_run.log", "ab", buffering=0) + except OSError: + log_fp = None + # 子进程 bootstrap:等端口空闲 -> 直接以 __main__ 运行 bot.py(该进程即 bot,不残留 wrapper) + bootstrap = ( + "import socket,time,sys,runpy\n" + "port=%d\n" % _BOT_PORT + + "for _ in range(120):\n" + " s=socket.socket()\n" + " try:\n" + " s.bind(('0.0.0.0',port)); s.close(); break\n" + " except OSError:\n" + " s.close(); time.sleep(0.5)\n" + "else:\n" + " sys.exit(2)\n" + "runpy.run_path('bot.py', run_name='__main__')\n" + ) + flags = 0 + if hasattr(subprocess, "CREATE_NEW_PROCESS_GROUP"): + flags |= subprocess.CREATE_NEW_PROCESS_GROUP + if hasattr(subprocess, "DETACHED_PROCESS"): + flags |= subprocess.DETACHED_PROCESS + env = {**os.environ, "PYTHONIOENCODING": "utf-8", "PYTHONUTF8": "1"} + subprocess.Popen( + [sys.executable, "-c", bootstrap], + cwd=str(_REPO_ROOT), + stdout=log_fp, + stderr=subprocess.STDOUT, + creationflags=flags, + env=env, + ) + + +def _archive_log() -> None: + """把当前 _bot_run.log 归档到 hexi/logs/bot_run_<时间戳>.log,并把原文件清空(供新运行)。""" + log = _REPO_ROOT / "_bot_run.log" + if not log.exists(): + return + logs_dir = _REPO_ROOT / "hexi" / "logs" + try: + logs_dir.mkdir(parents=True, exist_ok=True) + data = log.read_bytes() + if data: + ts = time.strftime("%Y%m%d_%H%M%S") + target = logs_dir / f"bot_run_{ts}.log" + target.write_bytes(data) + logger.info(f"已归档旧日志 -> {target.name}") + # 清空原日志,新 run 从空文件开始 + open(log, "wb").close() + except OSError as e: # noqa: BLE001 + logger.warning(f"归档日志失败: {type(e).__name__}: {e}") + + +def _schedule_bot_action(action: str) -> None: + """1 秒后执行:stop 直接退出;restart 先拉起新进程再退出旧进程。""" + + def _work() -> None: + time.sleep(1.0) + _archive_log() + if action == "restart": + _spawn_bot() + time.sleep(1.0) + os._exit(0) + + threading.Thread(target=_work, daemon=True).start() + + +def _uvicorn_access_debug(record: _logging.LogRecord) -> bool: + """把 uvicorn 访问日志级别改为 DEBUG:默认 INFO 下不显示,开启 DEBUG 才可见。""" + if record.name == "uvicorn.access": + record.levelno = _logging.DEBUG + record.levelname = "DEBUG" + return True + class PasswordModel(BaseModel): old_password: str @@ -51,6 +150,13 @@ class PluginControlModel(BaseModel): chat: list[str] | None = None +class BotConfigModel(BaseModel): + superusers: list[str] | None = None + nickname: list[str] | None = None + debug: bool | None = None + log_level: str | None = None + + async def _first_bot(): """取第一个 OneBot V11 bot,无则 None。""" try: @@ -216,6 +322,27 @@ def build_hub_app() -> FastAPI: raise HTTPException(status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, detail=str(e)) from e return {"ok": True, **cfg} + @app.get("/api/system/bot_config") + async def bot_config_get(_: dict = Depends(get_current_user)): + """读取 bot 全局配置(SUPERUSERS / NICKNAME / DEBUG / LOG_LEVEL)。""" + from hexi.plugins.nonebot_plugin_web_hub.bot_settings import current_values + + return {"ok": True, **current_values()} + + @app.post("/api/system/bot_config") + async def bot_config_set( + payload: BotConfigModel, + _: dict = Depends(get_current_user), + ): + """保存 bot 全局配置并尽量热应用到运行态。""" + from hexi.plugins.nonebot_plugin_web_hub.bot_settings import save_bot_settings + + try: + result = save_bot_settings(payload.dict(exclude_none=True)) + except ValueError as e: + raise HTTPException(status_code=422, detail=str(e)) from e + return result + @app.post("/api/settings/password") async def settings_password( payload: PasswordModel, @@ -230,6 +357,125 @@ def build_hub_app() -> FastAPI: raise HTTPException(status_code=400, detail="原密码错误") return {"ok": True, "msg": "密码已修改"} + @app.get("/api/logs") + async def logs( + limit: int = 500, + _: dict = Depends(get_current_user), + ): + """实时读取 bot 运行日志(优先 _bot_run.log),返回最近 limit 行,供前端轮询。""" + root = Path(__file__).resolve().parents[3] # 仓库根目录 + candidates = [ + root / "_bot_run.log", + root / "hexi" / "logs" / "bot.log", + ] + path = next((p for p in candidates if p.exists()), None) + if path is None: + return {"ok": False, "msg": "未找到日志文件", "lines": [], "size": 0, "total": 0} + try: + raw = path.read_bytes() + except OSError as e: # noqa: BLE001 + return {"ok": False, "msg": f"读取日志失败: {e}", "lines": [], "size": 0, "total": 0} + # 逐行 UTF-8 优先、GBK 兜底:兼容旧 GBK 日志与切换为 UTF-8 后的新日志混存 + # 保留 ANSI 颜色码,交给前端渲染颜色 + lines = [] + for raw_line in raw.split(b"\n"): + try: + line = raw_line.decode("utf-8") + except UnicodeDecodeError: + line = raw_line.decode("gbk", errors="replace") + lines.append(line.rstrip("\r")) + tail = lines[-max(1, int(limit)) :] + return {"ok": True, "file": path.name, "size": len(raw), "offset": len(raw), "lines": tail, "total": len(lines)} + + @app.get("/api/dashboard/stream") + async def dashboard_stream( + _: dict = Depends(get_current_user), + ): + """Dashboard 状态 SSE 实时推送(每 2 秒采集一次)。""" + + async def gen(): + while True: + try: + data = await collect_dashboard() + payload = {"ok": True, **data} + except Exception as e: # noqa: BLE001 + payload = {"ok": False, "msg": f"采集失败: {e}"} + yield f"data: {json.dumps(payload, ensure_ascii=False)}\n\n" + await asyncio.sleep(2) + + return StreamingResponse(gen(), media_type="text/event-stream") + + @app.get("/api/logs/stream") + async def logs_stream( + since: int = 0, + _: dict = Depends(get_current_user), + ): + """SSE 实时日志流:从 since(字节偏移)增量推送新日志行。""" + root = Path(__file__).resolve().parents[3] # 仓库根目录 + candidates = [ + root / "_bot_run.log", + root / "hexi" / "logs" / "bot.log", + ] + path = next((p for p in candidates if p.exists()), None) + if path is None: + raise HTTPException(status_code=404, detail="未找到日志文件") + + async def gen(): + current = max(0, since) + beat = 0 + await asyncio.sleep(0) + while True: + try: + size = path.stat().st_size + except OSError: + await asyncio.sleep(1.0) + continue + if current > size: + current = 0 # 日志被轮转/截断 + if current < size: + try: + with open(path, "rb") as f: + f.seek(current) + raw = f.read() + except OSError: + await asyncio.sleep(1.0) + continue + last_nl = raw.rfind(b"\n") + if last_nl != -1: + # 只处理完整行,结尾半行留给下次;保留 ANSI 颜色码供前端渲染 + data = raw[: last_nl + 1] + raw_lines = data.split(b"\n") + if raw_lines and raw_lines[-1] == b"": + raw_lines = raw_lines[:-1] + current = current + last_nl + 1 + for raw_line in raw_lines: + try: + line = raw_line.decode("utf-8") + except UnicodeDecodeError: + line = raw_line.decode("gbk", errors="replace") + payload = {"line": line.rstrip("\r"), "offset": current} + yield f"data: {json.dumps(payload, ensure_ascii=False)}\n\n" + await asyncio.sleep(0.5) + beat += 1 + if beat >= 30: # 每 ~15s 一次心跳保活 + beat = 0 + yield ": ping\n\n" + + return StreamingResponse(gen(), media_type="text/event-stream") + + @app.post("/api/system/bot") + async def bot_action( + payload: dict, + _: dict = Depends(get_current_user), + ): + """停止/重启 bot 进程(stop 直接退出;restart 先拉起新进程再退出旧进程)。""" + action = (payload or {}).get("action", "") + if action not in {"stop", "restart"}: + raise HTTPException(status_code=400, detail="action 必须是 stop 或 restart") + _schedule_bot_action(action) + label = "停止" if action == "stop" else "重启" + return {"ok": True, "msg": f"已请求{label} bot,约 1 秒后执行"} + assets = WEB_DIST / "assets" if assets.exists(): app.mount("/assets", StaticFiles(directory=str(assets)), name="hub_assets") @@ -291,4 +537,10 @@ mount_hub() @get_driver().on_startup async def _startup_mount_web_plugins() -> None: """等所有插件 import 完成后,注册表就绪,再统一挂载各插件 API。""" - _mount_all_web_plugins() \ No newline at end of file + _mount_all_web_plugins() + + +@get_driver().on_startup +async def _downgrade_uvicorn_access_logs() -> None: + """把 uvicorn.access 日志降级为 DEBUG(经 loguru 后按日志等级过滤)。""" + _logging.getLogger("uvicorn.access").addFilter(_uvicorn_access_debug) \ No newline at end of file diff --git a/hexi/plugins/nonebot_plugin_web_hub/bot_settings.py b/hexi/plugins/nonebot_plugin_web_hub/bot_settings.py new file mode 100644 index 0000000..09ba815 --- /dev/null +++ b/hexi/plugins/nonebot_plugin_web_hub/bot_settings.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +"""Bot 全局配置的读取 / 写入(SUPERUSERS / NICKNAME / DEBUG / LOG_LEVEL)。 + +- 读取:优先取 NoneBot driver.config 的当前生效值,退化到 .env / os.environ。 +- 写入:落盘到 .env(保留 JSON 列表格式),写 os.environ(即时可读), + 并在可能范围内热应用到 driver.config 与 loguru(LOG_LEVEL)。 +- 注意:个别插件在 import 时把 SUPERUSERS/NICKNAME 拷贝成了常量, + 想让所有插件完全生效建议保存后重启 bot(前端会给出提示)。 +""" + +from __future__ import annotations + +import json +import os +from pathlib import Path +from typing import Any + +from nonebot import get_driver, logger + +_REPO_ROOT = Path(__file__).resolve().parents[3] +# 仓库根目录的 .env(NoneBot 启动时自动加载) +_ENV_PATH = _REPO_ROOT / ".env" + +# 表单键 -> 环境变量名 +_KEY_ENV: dict[str, str] = { + "superusers": "SUPERUSERS", + "nickname": "NICKNAME", + "debug": "DEBUG", + "log_level": "LOG_LEVEL", +} + +# LOG_LEVEL 可选项(写入时建议大写) +LOG_LEVEL_OPTIONS = ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"] + + +def _env_get(name: str, default: str = "") -> str: + """os.environ > .env 文件 > default。""" + val = os.getenv(name) + if val: + return val + if _ENV_PATH.exists(): + for line in _ENV_PATH.read_text(encoding="utf-8").splitlines(): + line = line.strip() + if line.startswith(name + "=") or line.startswith(name + " ="): + return line.split("=", 1)[1].strip().split(" #", maxsplit=1)[0].strip() + return default + + +def _parse_list(value: str) -> list[str]: + """把 env 里可能是 JSON 数组或逗号/空白分隔的列表解析成 list[str]。""" + value = (value or "").strip() + if not value: + return [] + try: + parsed = json.loads(value) + if isinstance(parsed, list): + return [str(x) for x in parsed] + return [str(parsed)] + except Exception: + # 兼容逗号/空格分隔、带引号的形式 + return [ + part.strip().strip("\"'").strip() + for part in value.replace(" ", ",").split(",") + if part.strip() + ] + + +def _serialize_list(items: list[str]) -> str: + """序列化成 .env 使用的 JSON 数组字符串。""" + return json.dumps([str(x) for x in items], ensure_ascii=False) + + +def _normalize_log_level(value: Any) -> str: + """把 log_level 统一成大写字符串。""" + if isinstance(value, int): + # loguru 数字等级:20=DEBUG 30=INFO 40=WARNING 50=ERROR + mapping = {10: "TRACE", 20: "DEBUG", 30: "INFO", 40: "WARNING", 50: "ERROR", 60: "CRITICAL"} + return mapping.get(value, "INFO") + return str(value).upper() + + +def current_values() -> dict[str, Any]: + """返回当前生效值(读取优先级:driver.config > .env)。""" + try: + cfg = get_driver().config + except Exception: + cfg = None + + if cfg is not None: + superusers = sorted(str(x) for x in getattr(cfg, "superusers", []) or []) + nickname = sorted(str(x) for x in getattr(cfg, "nickname", []) or []) + debug = bool(getattr(cfg, "debug", False)) + log_level = _normalize_log_level(getattr(cfg, "log_level", "INFO")) + else: + superusers = _parse_list(_env_get("SUPERUSERS")) + nickname = _parse_list(_env_get("NICKNAME")) + debug = _env_get("DEBUG", "").strip().lower() in ("1", "true", "yes", "on") + log_level = _normalize_log_level(_env_get("LOG_LEVEL", "INFO")) + + return { + "superusers": superusers, + "nickname": nickname, + "debug": bool(debug), + "log_level": log_level, + "log_level_options": LOG_LEVEL_OPTIONS, + "source": "config" if cfg is not None else "env", + } + + +def _set_env_line(name: str, value: str) -> None: + """替换 .env 中已有的 name= 行(保留其它行),不存在则追加。""" + try: + if _ENV_PATH.exists(): + lines = _ENV_PATH.read_text(encoding="utf-8").splitlines() + else: + lines = [] + replaced = False + out: list[str] = [] + for line in lines: + stripped = line.strip() + if stripped.startswith(name + "=") or stripped.startswith(name + " ="): + if not replaced: + out.append(f"{name}={value}") + replaced = True + # 重复行跳过 + else: + out.append(line) + if not replaced: + out.append(f"{name}={value}") + out_text = "\n".join(out).rstrip("\n") + "\n" + _ENV_PATH.write_text(out_text, encoding="utf-8") + except Exception as e: # noqa: BLE001 + logger.warning(f"写入 .env({name}) 失败: {type(e).__name__}: {e}") + + +def _apply_log_level(log_level: str) -> None: + """把 LOG_LEVEL 热应用到 loguru 的默认过滤配置。""" + try: + from nonebot.log import logger as nb_logger + + nb_logger.configure(extra={"nonebot_log_level": log_level}) + except Exception as e: # noqa: BLE001 + logger.warning(f"热应用 LOG_LEVEL 失败: {type(e).__name__}: {e}") + + +def save_bot_settings(values: dict[str, Any]) -> dict[str, Any]: + """保存并尽量热应用。返回(新的当前值 + 提示)。""" + # 规范化输入 + superusers = [str(x) for x in (values.get("superusers") or []) if str(x).strip()] + nickname = [str(x) for x in (values.get("nickname") or []) if str(x).strip()] + debug = bool(values.get("debug", False)) + log_level = _normalize_log_level(values.get("log_level", "INFO")) + if log_level not in LOG_LEVEL_OPTIONS: + raise ValueError(f"LOG_LEVEL 必须是 {'/'.join(LOG_LEVEL_OPTIONS)} 之一") + + # 1. 写 os.environ(即时可读,进程内 getenv 立刻生效) + os.environ["SUPERUSERS"] = _serialize_list(superusers) + os.environ["NICKNAME"] = _serialize_list(nickname) + os.environ["DEBUG"] = "true" if debug else "false" + os.environ["LOG_LEVEL"] = log_level + + # 2. 落盘 .env(重启后依然生效) + _set_env_line("SUPERUSERS", _serialize_list(superusers)) + _set_env_line("NICKNAME", _serialize_list(nickname)) + _set_env_line("DEBUG", "true" if debug else "false") + _set_env_line("LOG_LEVEL", log_level) + + # 3. 热应用到 driver.config + applied: list[str] = [] + try: + cfg = get_driver().config + if hasattr(cfg, "superusers"): + cfg.superusers = set(superusers) + applied.append("SUPERUSERS") + if hasattr(cfg, "nickname"): + cfg.nickname = set(nickname) + applied.append("NICKNAME") + # DEBUG 在 NoneBot Config 中属于 extra 字段,直接透传 + try: + setattr(cfg, "debug", debug) + applied.append("DEBUG") + except Exception: + pass + if hasattr(cfg, "log_level"): + cfg.log_level = log_level + applied.append("LOG_LEVEL") + except Exception as e: # noqa: BLE001 + logger.warning(f"热应用 driver.config 失败: {type(e).__name__}: {e}") + + # 4. LOG_LEVEL 应用到 loguru + _apply_log_level(log_level) + + return { + "ok": True, + **current_values(), + "applied": applied, + "restart_required": True, + "notice": "已保存到 .env 并尽量热应用;部分插件在 import 时缓存了 SUPERUSERS/NICKNAME," + "如需完全生效,请在下方执行「重启 bot」。", + } diff --git a/hexi/plugins/nonebot_plugin_web_hub/dashboard.py b/hexi/plugins/nonebot_plugin_web_hub/dashboard.py index 5b74254..960cd98 100644 --- a/hexi/plugins/nonebot_plugin_web_hub/dashboard.py +++ b/hexi/plugins/nonebot_plugin_web_hub/dashboard.py @@ -23,6 +23,9 @@ except Exception: # pragma: no cover _MODULE_START = time.time() +# 网络速率采样:记录上一次累计计数与时间,用于计算实时 bytes/s 用量 +_NET_LAST: dict = {"time": None, "sent": None, "recv": None} + async def _collect_cpu() -> dict: try: @@ -91,6 +94,95 @@ async def _collect_process() -> dict: return info +async def _collect_network() -> dict: + """采集网络流量累计值 + 实时速率(bytes/s)。""" + global _NET_LAST + now = time.time() + try: + io = psutil.net_io_counters(pernic=False) + except Exception: + return { + "sent": 0, + "recv": 0, + "sent_rate": 0, + "recv_rate": 0, + "packets_sent": 0, + "packets_recv": 0, + "interfaces": [], + } + sent = int(io.bytes_sent) + recv = int(io.bytes_recv) + sent_rate = recv_rate = 0.0 + last = _NET_LAST + if last["time"] is not None and last["sent"] is not None: + dt = max(0.001, now - float(last["time"])) + sent_rate = max(0.0, (sent - int(last["sent"])) / dt) + recv_rate = max(0.0, (recv - int(last["recv"])) / dt) + _NET_LAST = {"time": now, "sent": sent, "recv": recv} + + # 逐网卡明细(含 IP / 友好名称) + interfaces: list[dict] = [] + try: + pernic = psutil.net_io_counters(pernic=True) + addrs = psutil.net_if_addrs() + stats = psutil.net_if_stats() + for name, cnt in pernic.items(): + if not cnt.bytes_sent and not cnt.bytes_recv: + continue + ips = [] + for addr in addrs.get(name, []): + ip = (addr.address or "").strip() + # 只保留 IPv4(带点分十进制),忽略 MAC / IPv6 + if ip and ":" not in ip and ip.count(".") >= 3: + ips.append(ip) + up = bool(stats.get(name).isup) if name in stats else True + interfaces.append({ + "name": name, + "up": up, + "sent": int(cnt.bytes_sent), + "recv": int(cnt.bytes_recv), + "ip": ", ".join(ips) if ips else "", + }) + except Exception: + interfaces = [] + + return { + "sent": sent, + "recv": recv, + "sent_rate": round(sent_rate, 1), + "recv_rate": round(recv_rate, 1), + "packets_sent": int(io.packets_sent), + "packets_recv": int(io.packets_recv), + "interfaces": interfaces, + } + + +async def _collect_backend() -> dict: + """BOT 后端信息:NoneBot 版本 / 驱动方式 / 装载插件数。""" + from nonebot import get_loaded_plugins + + try: + plugin_count = len(get_loaded_plugins()) + except Exception: + plugin_count = 0 + info: dict = { + "nonebot_version": _nonebot_version(), + "plugin_count": plugin_count, + "python": f"{platform.python_implementation()} {platform.python_version()}", + "driver_type": "", + "driver": "", + } + try: + from nonebot import get_driver + + driver = get_driver() + info["driver_type"] = getattr(driver, "type", "") or "" + info["driver"] = getattr(driver.config, "driver", "") or "" + except Exception: + pass + return info + + async def _collect_system() -> dict: boot = psutil.boot_time() now = time.time() @@ -180,13 +272,15 @@ async def _collect_bots() -> list: async def collect_dashboard() -> dict: """聚合采集,失败字段降级,不阻塞整体返回。""" - cpu, memory, process, system, disk, bots = await asyncio.gather( + cpu, memory, process, system, disk, bots, network, backend = await asyncio.gather( _collect_cpu(), _collect_memory(), _collect_process(), _collect_system(), _collect_disk(), _collect_bots(), + _collect_network(), + _collect_backend(), ) return { "bots": bots, @@ -195,4 +289,6 @@ async def collect_dashboard() -> dict: "memory": memory, "process": process, "disk": disk, + "network": network, + "backend": backend, } diff --git a/hexi/web/favicon.svg b/hexi/web/favicon.svg new file mode 100644 index 0000000..3e4be0b --- /dev/null +++ b/hexi/web/favicon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/hexi/web/index.html b/hexi/web/index.html index af986f5..2aa4ba1 100644 --- a/hexi/web/index.html +++ b/hexi/web/index.html @@ -3,6 +3,7 @@ + HeXi · 统一管理台 diff --git a/hexi/web/public/favicon.svg b/hexi/web/public/favicon.svg new file mode 100644 index 0000000..3e4be0b --- /dev/null +++ b/hexi/web/public/favicon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/hexi/web/src/api/client.ts b/hexi/web/src/api/client.ts index b93131e..dea4af2 100644 --- a/hexi/web/src/api/client.ts +++ b/hexi/web/src/api/client.ts @@ -58,6 +58,114 @@ export const hubPluginSaveConfig = async (id: string, values: Record await request('/hub/api/settings') export const hubChangePassword = async (old_password: string, new_password: string) => await request('/hub/api/settings/password', { method: 'POST', body: { old_password, new_password } }) +export const hubLogs = async (limit = 500) => await request('/hub/api/logs?limit=' + limit) +export const hubBotAction = async (action: 'stop' | 'restart') => + await request('/hub/api/system/bot', { method: 'POST', body: { action } }) +export const hubBotConfig = async () => await request('/hub/api/system/bot_config') +export const hubBotConfigSave = async (values: Record) => + await request('/hub/api/system/bot_config', { method: 'POST', body: values }) + +export function hubLogStream(opts: { + since: number + onLine: (line: string) => void + onStatus: (s: 'open' | 'reconnecting' | 'closed') => void +}): () => void { + const controller = new AbortController() + let stopped = false + let since = opts.since + + const read = async () => { + while (!stopped) { + try { + const res = await fetch('/hub/api/logs/stream?since=' + since, { + headers: { Authorization: 'Bearer ' + getToken() }, + signal: controller.signal, + }) + if (!res.ok || !res.body) throw new Error('HTTP ' + res.status) + opts.onStatus('open') + const reader = res.body.getReader() + const decoder = new TextDecoder() + let buf = '' + while (!stopped) { + const { done, value } = await reader.read() + if (done) break + buf += decoder.decode(value, { stream: true }) + let i + while ((i = buf.indexOf('\n\n')) !== -1) { + const block = buf.slice(0, i) + buf = buf.slice(i + 2) + for (const ln of block.split('\n')) { + if (ln.startsWith('data: ')) { + try { + const obj = JSON.parse(ln.slice(6)) + if (obj && obj.line !== undefined) { + opts.onLine(obj.line) + if (typeof obj.offset === 'number') since = obj.offset + } + } catch { /* 忽略坏帧 */ } + } + } + } + } + if (!stopped) opts.onStatus('reconnecting') + } catch (e: any) { + if (stopped || (e && e.name === 'AbortError')) return + opts.onStatus('reconnecting') + } + if (!stopped) await new Promise(res => setTimeout(res, 1500)) + } + } + + read() + return () => { stopped = true; controller.abort() } +} + +export function hubDashboardStream(opts: { + onData: (data: any) => void + onStatus?: (s: 'open' | 'reconnecting' | 'closed') => void +}): () => void { + const controller = new AbortController() + let stopped = false + + const read = async () => { + while (!stopped) { + try { + const res = await fetch('/hub/api/dashboard/stream', { + headers: { Authorization: 'Bearer ' + getToken() }, + signal: controller.signal, + }) + if (!res.ok || !res.body) throw new Error('HTTP ' + res.status) + opts.onStatus?.('open') + const reader = res.body.getReader() + const decoder = new TextDecoder() + let buf = '' + while (!stopped) { + const { done, value } = await reader.read() + if (done) break + buf += decoder.decode(value, { stream: true }) + let i + while ((i = buf.indexOf('\n\n')) !== -1) { + const block = buf.slice(0, i) + buf = buf.slice(i + 2) + for (const ln of block.split('\n')) { + if (ln.startsWith('data: ')) { + try { opts.onData(JSON.parse(ln.slice(6))) } catch { /* 忽略坏帧 */ } + } + } + } + } + if (!stopped) opts.onStatus?.('reconnecting') + } catch (e: any) { + if (stopped || (e && e.name === 'AbortError')) return + opts.onStatus?.('reconnecting') + } + if (!stopped) await new Promise(res => setTimeout(res, 2000)) + } + } + + read() + return () => { stopped = true; controller.abort() } +} export const api = (plugin: string) => ({ get: (path: string) => request(`/api/${plugin}/${path}`), diff --git a/hexi/web/src/layout/AppLayout.tsx b/hexi/web/src/layout/AppLayout.tsx index 850fe2f..0f23ccf 100644 --- a/hexi/web/src/layout/AppLayout.tsx +++ b/hexi/web/src/layout/AppLayout.tsx @@ -1,6 +1,6 @@ -import { NavLink, Outlet, useLocation, useNavigate } from 'react-router-dom' +import { Navigate, NavLink, Outlet, useLocation, useNavigate } from 'react-router-dom' import { Avatar, Button, Separator } from '@heroui/react' -import { House, Rocket, Gear } from '@gravity-ui/icons' +import { House, Rocket, Gear, FileText } from '@gravity-ui/icons' import { useAuth } from '../auth/auth' interface NavItem { id: string; label: string; description: string; icon: any } @@ -13,17 +13,20 @@ export function AppLayout() { const navItems: NavItem[] = [ { id: 'home', label: '首页', description: '主机与服务状态', icon: House }, { id: 'plugins', label: '插件管理', description: '插件总览与分群控制', icon: Rocket }, + { id: 'logs', label: '查看日志', description: 'bot 运行日志实时查看', icon: FileText }, { id: 'settings', label: '设置', description: '账号与系统设置', icon: Gear }, ] - const isHome = location.pathname === '/hub' - const isSettings = location.pathname.startsWith('/hub/settings') - const isPluginList = location.pathname.startsWith('/hub/plugins') - const isPlugins = isPluginList || (!isHome && !isSettings && location.pathname.startsWith('/hub/')) + const path = location.pathname.replace(/\/+$/, '') || '/' + const isHome = path === '/hub' + const isSettings = path.startsWith('/hub/settings') + const isLogs = path.startsWith('/hub/logs') + const isPluginList = path.startsWith('/hub/plugins') + const isPlugins = isPluginList || (!isHome && !isSettings && !isLogs && path.startsWith('/hub/')) const isPluginSub = isPlugins && !isPluginList - const activeId = isPlugins ? 'plugins' : isSettings ? 'settings' : 'home' + const activeId = isPlugins ? 'plugins' : isLogs ? 'logs' : isSettings ? 'settings' : 'home' const pageMeta = navItems.find(it => it.id === activeId) || navItems[0] - if (!token) return null + if (!token) return return (
@@ -108,7 +111,7 @@ export function AppLayout() { {(username || 'U').charAt(0).toUpperCase()} {username || '未登录'} - +
diff --git a/hexi/web/src/pages/home/index.tsx b/hexi/web/src/pages/home/index.tsx index 47e80cf..ea13771 100644 --- a/hexi/web/src/pages/home/index.tsx +++ b/hexi/web/src/pages/home/index.tsx @@ -1,6 +1,6 @@ import { useCallback, useEffect, useRef, useState } from 'react' -import { Avatar, Button, Card } from '@heroui/react' -import { hubDashboard } from '../../api/client' +import { Avatar, Card } from '@heroui/react' +import { hubDashboard, hubDashboardStream } from '../../api/client' interface BotInfo { self_id: string @@ -52,6 +52,29 @@ interface DiskInfo { used: number total: number } +interface NicInfo { + name: string + up: boolean + sent: number + recv: number + ip: string +} +interface NetworkInfo { + sent: number + recv: number + sent_rate: number + recv_rate: number + packets_sent: number + packets_recv: number + interfaces: NicInfo[] +} +interface BackendInfo { + nonebot_version: string + plugin_count: number + python: string + driver: string + driver_type: string +} interface DashboardData { ok: boolean bots: BotInfo[] @@ -60,6 +83,8 @@ interface DashboardData { memory: MemInfo process: ProcessInfo disk: DiskInfo[] + network: NetworkInfo + backend: BackendInfo } function fmtBytes(n: number): string { @@ -71,6 +96,11 @@ function fmtBytes(n: number): string { return v.toFixed(1) + ' ' + units[i] } +function fmtRate(n: number): string { + if (!Number.isFinite(n) || n < 0) return '0 B/s' + return fmtBytes(n) + '/s' +} + function fmtUptime(sec: number): string { if (!Number.isFinite(sec)) return '—' const d = Math.floor(sec / 86400) @@ -100,6 +130,24 @@ function coreColor(v: number): string { return 'bg-emerald-500' } +function InfoRow({ label, value }: { label: string; value: string }) { + return ( +
+ {label} + {value || '—'} +
+ ) +} + +function SectionTitle({ title, desc }: { title: string; desc: string }) { + return ( +
+

{title}

+

{desc}

+
+ ) +} + export default function HomePage() { const [data, setData] = useState(null) const [error, setError] = useState('') @@ -124,53 +172,93 @@ export default function HomePage() { }, []) useEffect(() => { - refresh(true) // 初始静默加载 - const timer = setInterval(() => { - if (document.visibilityState !== 'hidden') refresh(true) - }, 15000) - const onVisible = () => { - if (document.visibilityState === 'visible') refresh(true) - } - document.addEventListener('visibilitychange', onVisible) - return () => { - clearInterval(timer) - document.removeEventListener('visibilitychange', onVisible) - } + refresh(true) // 初始静默加载,快速出首屏 + const dispose = hubDashboardStream({ + onData: (d) => { + if (d && d.ok !== false) { setData(d); setError('') } + }, + }) + return () => { dispose() } }, [refresh]) const cpu = data?.cpu const mem = data?.memory const proc = data?.process const sys = data?.system - - const hostSubtitle = [ - cpu?.brand, - cpu?.logical && cpu.logical + ' 核', - (data ? sys?.python : ''), - data ? 'NoneBot ' + sys?.nonebot : '', - ].filter(Boolean).join(' · ') + const net = data?.network + const backend = data?.backend return (

总览

-

主机与服务状态

+

主机与 BOT 综合状态(每 2 秒刷新)

-
{error && !data &&

{error}

} - {/* 主机资源 */} + {/* 1. 主机规格信息:系统 / 处理器 / 内存 / 硬盘 */} -
-
- 主机资源 -

{hostSubtitle || '加载中…'}

+ + + +
+
+
系统
+
+ + + +
+
+
+
处理器
+
+ + + +
+
+
+
内存
+
+ + + +
+
+
硬盘
+ {!data ? ( +

加载中…

+ ) : !data.disk.length ? ( +

未获取到磁盘信息

+ ) : ( +
+ {data.disk.map((d) => ( +
+
+ {d.mount} + {d.percent}% +
+
+

{fmtBytes(d.used)} / {fmtBytes(d.total)}

+
+ ))} +
+ )} +
+
+ + + {/* 2. 资源占用信息:CPU / 内存 / 网络 */} + + +
@@ -181,9 +269,7 @@ export default function HomePage() { {cpu ? cpu.percent + '%' : '—'}
-

- 负载: {cpu?.load_avg ? cpu.load_avg.join(' / ') : '—'} -

+

负载: {cpu?.load_avg ? cpu.load_avg.join(' / ') : '—'}

{cpu?.per_core?.length ? (
{cpu.per_core.map((v, i) => ( @@ -204,35 +290,72 @@ export default function HomePage() { {mem ? mem.percent + '%' : '—'}
-

- 本进程 {mem ? fmtBytes(mem.process_rss) : '—'} · 其他已用 {mem ? fmtBytes(Math.max(0, mem.used - mem.process_rss)) : '—'} · 空间 {mem ? fmtBytes(Math.max(0, mem.total - mem.used)) : '—'} -

+

已用 {mem ? fmtBytes(mem.used) : '—'} · 可用 {mem ? fmtBytes(mem.available) : '—'}

共 {mem ? fmtBytes(mem.total) : '—'}

- {/* 进程 */} + {/* 网络 */}
- 运行进程 - PID {proc?.pid ?? '—'} + 网络流量 + {net?.interfaces?.length ? {net.interfaces.length} 网卡 : null}
-
-
RSS
{proc ? fmtBytes(proc.rss) : '—'}
-
进程
{proc?.name || '—'}
-
CPU
{proc?.cpu_percent != null ? proc.cpu_percent + '%' : '—'}
-
内存占用
{proc?.memory_percent != null ? proc.memory_percent + '%' : '—'}
-
启动时长
{sys ? fmtUptime(sys.bot_uptime_seconds) : '—'}
-
+
+
↓ 下行速率
{net ? fmtRate(net.recv_rate) : '—'}
+
↑ 上行速率
{net ? fmtRate(net.sent_rate) : '—'}
+
累计下行
{net ? fmtBytes(net.recv) : '—'}
+
累计上行
{net ? fmtBytes(net.sent) : '—'}
+
+
+
+ + {/* 本进程 */} +
+
运行进程(bot)
+
+
PID
{proc?.pid ?? '—'}
+
进程名
{proc?.name || '—'}
+
CPU
{proc?.cpu_percent != null ? proc.cpu_percent + '%' : '—'}
+
内存占用
{proc?.memory_percent != null ? proc.memory_percent + '%' : '—'}
+
RSS
{proc ? fmtBytes(proc.rss) : '—'}
+
+
+ +
+ + {/* 3. BOT 后端信息:NoneBot 版本 / 驱动方式 / 装载插件数 */} + + + + + +
+
+
NoneBot 版本
+
{backend?.nonebot_version || '—'}
+
+
+
驱动方式
+
{backend?.driver || '—'}
+
{backend?.driver_type || ''}
+
+
+
装载插件数
+
{backend?.plugin_count ?? '—'} 个
+
+
+
Python
+
{backend?.python || '—'}
+
bot 运行 {sys ? fmtUptime(sys.bot_uptime_seconds) : '—'}
- {/* 在线会话 */} + {/* 4. BOT 协议端信息:登录账号昵称 / 账号 / 适配器类型 */} - 在线会话 -

当前已接入并完成登录的 QQ 账号

+
{!data ? ( @@ -254,6 +377,7 @@ export default function HomePage() {
{bot.msg_recv != null && 收 {bot.msg_recv}} {bot.msg_sent != null && 发 {bot.msg_sent}} + {bot.online != null && {bot.online ? '在线' : '离线'}} {bot.ws_connected ? '已连接' : '未连接'} diff --git a/hexi/web/src/pages/logs/index.tsx b/hexi/web/src/pages/logs/index.tsx new file mode 100644 index 0000000..f36e1ff --- /dev/null +++ b/hexi/web/src/pages/logs/index.tsx @@ -0,0 +1,202 @@ +import { useCallback, useEffect, useRef, useState, type CSSProperties } from 'react' +import { Button, Card } from '@heroui/react' +import { hubLogs, hubLogStream } from '../../api/client' + +const MAX_LINES = 2000 + +function fmtBytes(n: number): string { + if (!Number.isFinite(n)) return '—' + const units = ['B', 'KB', 'MB', 'GB'] + let v = n + let i = 0 + while (v >= 1024 && i < units.length - 1) { v /= 1024; i++ } + return v.toFixed(1) + ' ' + units[i] +} + +// ANSI SGR 颜色码 → 内联样式,用于还原 loguru 彩色日志 +const ANSI_FG: Record = { + 30: '#9ca3af', 31: '#f87171', 32: '#4ade80', 33: '#fbbf24', 34: '#60a5fa', 35: '#c084fc', 36: '#22d3ee', 37: '#e5e7eb', + 90: '#6b7280', 91: '#f87171', 92: '#4ade80', 93: '#fbbf24', 94: '#60a5fa', 95: '#c084fc', 96: '#22d3ee', 97: '#f9fafb', +} +const ANSI_BG: Record = { + 40: '#1f2937', 41: '#7f1d1d', 42: '#14532d', 43: '#713f12', 44: '#1e3a8a', 45: '#581c87', 46: '#155e75', 47: '#111827', + 100: '#374151', 101: '#7f1d1d', 102: '#14532d', 103: '#713f12', 104: '#1e3a8a', 105: '#581c87', 106: '#155e75', 107: '#111827', +} +// 当日志行不含 ANSI 颜色码(例如历史日志/旧进程写入的非彩色文本)时, +// 按 loguru 等级标记降级上色,确保 Web 日志查看器始终有颜色。 +const LEVEL_COLORS: Record = { + TRACE: '#c084fc', + DEBUG: '#60a5fa', + INFO: '#22d3ee', + SUCCESS: '#4ade80', + WARNING: '#fbbf24', + ERROR: '#f87171', + CRITICAL: '#f87171', +} + +function parseAnsi(text: string): { text: string; style: CSSProperties }[] { + const out: { text: string; style: CSSProperties }[] = [] + let fg: string | undefined + let bg: string | undefined + let bold = false + let underline = false + let run = '' + const flush = () => { + if (!run) return + const style: CSSProperties = {} + if (fg) style.color = fg + if (bg) style.backgroundColor = bg + if (bold) style.fontWeight = 'bold' + if (underline) style.textDecoration = 'underline' + out.push({ text: run, style }) + run = '' + } + for (let i = 0; i < text.length; i++) { + const ch = text[i] + if (ch === '\u001b' && text[i + 1] === '[') { + const end = text.indexOf('m', i) + if (end !== -1) { + const codes = text.slice(i + 2, end).split(';').map(s => parseInt(s, 10)) + flush() + for (const c of codes) { + if (c === 0) { fg = undefined; bg = undefined; bold = false; underline = false } + else if (c === 1) bold = true + else if (c === 4) underline = true + else if (c >= 30 && c <= 37 || c >= 90 && c <= 97) fg = ANSI_FG[c] + else if (c >= 40 && c <= 47 || c >= 100 && c <= 107) bg = ANSI_BG[c] + else if (c === 39) fg = undefined + else if (c === 49) bg = undefined + } + i = end + continue + } + } + run += ch + } + flush() + return out +} + +function AnsiLine({ text }: { text: string }) { + const parts = parseAnsi(text) + const hasAnsi = parts.some((p) => Boolean(p.style.color || p.style.backgroundColor || p.style.fontWeight || p.style.textDecoration)) + if (hasAnsi) { + return <>{parts.map((p, i) => {p.text})} + } + // 无 ANSI 时按等级标记整体上色,保证非彩色日志文件也能在 Web 里看到颜色。 + const m = text.match(/\[(TRACE|DEBUG|INFO|SUCCESS|WARNING|ERROR|CRITICAL)\]/) + const color = m && LEVEL_COLORS[m[1]] + if (color) return {text} + return <>{text} +} + +export default function LogsPage() { + const [lines, setLines] = useState([]) + const [info, setInfo] = useState<{ file: string; size: number; total: number }>({ file: '', size: 0, total: 0 }) + const [error, setError] = useState('') + const [streamStatus, setStreamStatus] = useState<'连接中' | '实时' | '重连中' | '已断开'>('连接中') + const [follow, setFollow] = useState(true) + const [paused, setPaused] = useState(false) + const [loading, setLoading] = useState(false) + const scrollRef = useRef(null) + const sinceRef = useRef(0) + const pausedRef = useRef(false) + const pendingRef = useRef([]) + const disposeRef = useRef<(() => void) | null>(null) + + const append = useCallback((line: string) => { + setLines(prev => [...prev, line].slice(-MAX_LINES)) + }, []) + + const connect = useCallback(() => { + if (disposeRef.current) disposeRef.current() + disposeRef.current = hubLogStream({ + since: sinceRef.current, + onLine: (line) => { + if (pausedRef.current) { pendingRef.current.push(line); return } + append(line) + }, + onStatus: (s) => setStreamStatus(s === 'open' ? '实时' : s === 'reconnecting' ? '重连中' : '已断开'), + }) + }, [append]) + + const refresh = useCallback(async () => { + setLoading(true) + setError('') + try { + const d = await hubLogs(500) + if (!d) throw new Error('读取日志失败') + if (d.ok === false) throw new Error(d.msg || '读取日志失败') + setLines(d.lines || []) + setInfo({ file: d.file || '', size: d.size || 0, total: d.total || 0 }) + sinceRef.current = d.offset || 0 + connect() + } catch (e: any) { + setError(e.message || '读取日志失败') + } finally { setLoading(false) } + }, [connect]) + + useEffect(() => { + pausedRef.current = paused + }, [paused]) + + useEffect(() => { + // 恢复接收时,把暂停期间暂存的行补进来 + if (!paused && pendingRef.current.length) { + const flush = pendingRef.current + pendingRef.current = [] + setLines(prev => [...prev, ...flush].slice(-MAX_LINES)) + } + }, [paused]) + + useEffect(() => { + refresh() + return () => { if (disposeRef.current) disposeRef.current() } + }, [refresh]) + + useEffect(() => { + if (follow && scrollRef.current) { + scrollRef.current.scrollTop = scrollRef.current.scrollHeight + } + }, [lines, follow]) + + const statusClass = streamStatus === '实时' ? 'text-emerald-600' : streamStatus === '重连中' ? 'text-amber-600' : 'text-slate-500' + + return ( +
+
+
+

查看日志

+

实时读取 bot 运行日志(SSE 推送)

+
+
+ + +
+
+ + {error &&

{error}

} + + + +
+ 日志流 +
+ ● {streamStatus} + {info.file && {info.file} · {fmtBytes(info.size)} · 共 {info.total} 行} +
+
+
+ +
+ {lines.length ? lines.map((ln, i) => ( +
+ )) : ( +
暂无日志…
+ )} +
+
+
+
+ ) +} diff --git a/hexi/web/src/pages/plugins/index.tsx b/hexi/web/src/pages/plugins/index.tsx index 89c590a..c22bf24 100644 --- a/hexi/web/src/pages/plugins/index.tsx +++ b/hexi/web/src/pages/plugins/index.tsx @@ -4,12 +4,14 @@ import { Button, Card, Checkbox, + Drawer, + Dropdown, Input, Label, ListBox, - Modal, Select, Spinner, + Switch, TextArea, TextField, toast, @@ -52,11 +54,12 @@ interface ConfigField { interface ConfigData { schema: { fields: ConfigField[] }; values: Record; revision: number } const CHAT_OPTIONS = [ - { value: 'all', label: '全部(群聊 + 私聊)' }, + { value: 'all', label: '全部' }, { value: 'group', label: '仅群聊' }, { value: 'private', label: '仅私聊' }, ] const selectCls = 'min-w-[150px] bg-white border border-slate-200 rounded-lg px-3 py-2 text-sm text-slate-800 focus:border-indigo-400 focus:outline-none' +const chatSelectCls = 'min-w-[96px] bg-white border border-slate-200 rounded-lg px-3 py-2 text-sm text-slate-800 focus:border-indigo-400 focus:outline-none' function chatValue(chat: string[]): string { const s = (chat || []).filter(c => c === 'group' || c === 'private') @@ -82,7 +85,6 @@ export default function PluginsPage() { const [groups, setGroups] = useState([]) const [error, setError] = useState('') const [loading, setLoading] = useState(false) - const [expanded, setExpanded] = useState(null) const loadRef = useRef(false) const [configPlugin, setConfigPlugin] = useState(null) @@ -172,8 +174,9 @@ export default function PluginsPage() { ) } if (field.type === 'text' || field.type === 'json' || field.type === 'object') { + const isJson = field.type === 'json' return ( -