mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-14 21:52:56 +08:00
* ✨ feat(core): 更新群组信息、Markdown 样式与 Pydantic 兼容层 - 【group】添加更新所有群组信息指令,并同步群组控制台数据 - 【markdown】支持合并 Markdown 的 CSS 来源 - 【pydantic-compat】提供 model_validate 兼容函数 * ✨ feat(core): 增强定时任务与群组标签管理,重构调度核心 ✨ 新功能 * **标签 (tags)**: 引入群组标签服务。 * 支持静态标签和动态标签 (基于 Alconna 规则自动匹配群信息)。 * 支持黑名单模式及 `@all` 特殊标签。 * 提供 `tag_manage` 超级用户插件 (list, create, edit, delete 等)。 * 群成员变动时自动失效动态标签缓存。 * **调度 (scheduler)**: 增强定时任务。 * 重构 `ScheduledJob` 模型,支持 `TAG`, `ALL_GROUPS` 等多种目标类型。 * 新增任务别名 (`name`)、创建者、权限、来源等字段。 * 支持一次性任务 (`schedule_once`) 和 Alconna 命令行参数 (`--params-cli`)。 * 新增执行选项 (`jitter`, `spread`) 和并发策略 (`ALLOW`, `SKIP`, `QUEUE`)。 * 支持批量获取任务状态。 ♻️ 重构优化 * **调度器核心**: * 拆分 `service.py` 为 `manager.py` (API) 和 `types.py` (模型)。 * 合并 `adapter.py` / `job.py` 至 `engine.py` (统一调度引擎)。 * 引入 `targeting.py` 模块管理任务目标解析。 * **调度器插件 (scheduler_admin)**: * 迁移命令参数校验逻辑至 `ArparmaBehavior`。 * 引入 `dependencies.py` 和 `data_source.py` 解耦业务逻辑与依赖注入。 * 适配新的任务目标类型展示。 * 🐛 fix(tag): 修复黑名单标签解析逻辑并优化标签详情展示 * ✨ feat(scheduler): 为多目标定时任务添加固定间隔串行执行选项 * ✨ feat(schedulerAdmin): 允许定时任务删除、暂停、恢复命令支持多ID操作 * 🚨 auto fix by pre-commit hooks --------- Co-authored-by: webjoin111 <455457521@qq.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
125 lines
5.0 KiB
Python
125 lines
5.0 KiB
Python
from nonebot.plugin import PluginMetadata
|
||
|
||
from zhenxun.configs.utils import PluginExtraData, RegisterConfig
|
||
from zhenxun.utils.enum import PluginType
|
||
|
||
from . import commands, handlers
|
||
|
||
__all__ = ["commands", "handlers"]
|
||
|
||
__plugin_meta__ = PluginMetadata(
|
||
name="定时任务管理",
|
||
description="查看和管理由 SchedulerManager 控制的定时任务。",
|
||
usage="""### 📋 定时任务管理
|
||
---
|
||
#### 🔍 **查看任务**
|
||
- **命令**: `定时任务 查看 [选项]` (别名: `ls`, `list`)
|
||
- **选项**:
|
||
- `--all`: 查看所有群组的任务 **(SUPERUSER)**。
|
||
- `-g <群号>`: 查看指定群组的任务 **(SUPERUSER)**。
|
||
- `-p <插件名>`: 按插件名筛选。
|
||
- `--page <页码>`: 指定页码。
|
||
- **说明**:
|
||
- 在群聊中不带选项使用,默认查看本群任务。
|
||
- 在私聊中必须使用 `-g <群号>` 或 `--all`。
|
||
|
||
#### 📊 **任务状态**
|
||
- **命令**: `定时任务 状态 <任务ID>` (别名: `status`, `info`, `任务状态`)
|
||
- **说明**: 查看单个任务的详细信息和状态。
|
||
|
||
#### ⚙️ **任务管理 (SUPERUSER)**
|
||
- **设置**: `定时任务 设置 <插件>` (别名: `add`, `开启`)
|
||
- **选项**:
|
||
- `<时间选项>`: 详见下文。
|
||
- `-g <群号|all>`: 指定目标群组。
|
||
- `--kwargs "<参数>"`: 设置任务参数 (例: `"key=value"`)。
|
||
- **删除**: `定时任务 删除 <ID>` (别名: `del`, `rm`, `remove`, `关闭`, `取消`)
|
||
- **暂停**: `定时任务 暂停 <ID>` (别名: `pause`)
|
||
- **恢复**: `定时任务 恢复 <ID>` (别名: `resume`)
|
||
- **执行**: `定时任务 执行 <ID>` (别名: `trigger`, `run`)
|
||
- **更新**: `定时任务 更新 <ID>` (别名: `update`, `modify`, `修改`)
|
||
- **选项**:
|
||
- `<时间选项>`: 详见下文。
|
||
- `--kwargs "<参数>"`: 更新任务参数。
|
||
- **批量操作**: `删除/暂停/恢复` 命令支持通过 `-p <插件名>` 或 `--all`
|
||
(当前群) 进行批量操作。
|
||
|
||
#### 📝 **时间选项 (设置/更新时三选一)**
|
||
- `--cron "<分> <时> <日> <月> <周>"` (例: `--cron "0 8 * * *"`)
|
||
- `--interval <时间间隔>` (例: `--interval 30m`, `2h`, `10s`)
|
||
- `--date "<YYYY-MM-DD HH:MM:SS>"` (例: `--date "2024-01-01 08:00:00"`)
|
||
- `--daily "<HH:MM>"` (例: `--daily "08:30"`)
|
||
|
||
#### 📚 **其他功能**
|
||
- **命令**: `定时任务 插件列表` (别名: `plugins`)
|
||
- **说明**: 查看所有可设置定时任务的插件 **(SUPERUSER)**。
|
||
""".strip(),
|
||
extra=PluginExtraData(
|
||
author="HibiKier",
|
||
version="0.1.2",
|
||
plugin_type=PluginType.SUPERUSER,
|
||
configs=[
|
||
RegisterConfig(
|
||
module="SchedulerManager",
|
||
key="ALL_GROUPS_CONCURRENCY_LIMIT",
|
||
value=5,
|
||
help="“所有群组”类型定时任务的并发执行数量限制",
|
||
type=int,
|
||
),
|
||
RegisterConfig(
|
||
module="SchedulerManager",
|
||
key="JOB_MAX_RETRIES",
|
||
value=2,
|
||
help="定时任务执行失败时的最大重试次数",
|
||
type=int,
|
||
),
|
||
RegisterConfig(
|
||
module="SchedulerManager",
|
||
key="JOB_RETRY_DELAY",
|
||
value=10,
|
||
help="定时任务执行重试的间隔时间(秒)",
|
||
type=int,
|
||
),
|
||
RegisterConfig(
|
||
module="SchedulerManager",
|
||
key="SCHEDULER_TIMEZONE",
|
||
value="Asia/Shanghai",
|
||
help="定时任务使用的时区,默认为 Asia/Shanghai",
|
||
type=str,
|
||
),
|
||
RegisterConfig(
|
||
module="SchedulerManager",
|
||
key="SCHEDULE_ADMIN_LEVEL",
|
||
value=5,
|
||
help="设置'定时任务'系列命令的基础使用权限等级",
|
||
default_value=5,
|
||
type=int,
|
||
),
|
||
RegisterConfig(
|
||
module="SchedulerManager",
|
||
key="DEFAULT_JITTER_SECONDS",
|
||
value=60,
|
||
help="为多目标定时任务(如 --all, -t)设置的默认触发抖动秒数,避免所有任务同时启动。", # noqa: E501
|
||
default_value=60,
|
||
type=int,
|
||
),
|
||
RegisterConfig(
|
||
module="SchedulerManager",
|
||
key="DEFAULT_SPREAD_SECONDS",
|
||
value=300,
|
||
help="为多目标定时任务设置的默认执行分散秒数,将任务执行分散在一个时间窗口内。",
|
||
default_value=300,
|
||
type=int,
|
||
),
|
||
RegisterConfig(
|
||
module="SchedulerManager",
|
||
key="DEFAULT_INTERVAL_SECONDS",
|
||
value=0,
|
||
help="为多目标定时任务设置的默认串行执行间隔秒数(大于0时生效),用于控制任务间的固定时间间隔。",
|
||
default_value=0,
|
||
type=int,
|
||
),
|
||
],
|
||
).to_dict(),
|
||
)
|