mirror of
https://gitlab.com/KenanZhu/AutoLibraryManuals.git
synced 2026-11-05 05:35:51 +08:00
docs: optimize repeat cycle note wording in timer page
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
1 parent
beab1c3959
commit
ea5f7e89b0
7 files changed
+32
-177
No files matched your search
+10
-14
@@ -3,14 +3,16 @@ title: "AutoScript 概述"
|
||||
description: "AutoScript 自动化脚本引擎 - 在**重复性**定时任务执行前动态调整预约参数"
|
||||
---
|
||||
|
||||
## 什么是 AutoScript
|
||||
|
||||
AutoScript 是基于 Lua 语言的自动化脚本引擎,支持基础的条件判断和算术表达式语法,
|
||||
可在**重复性**定时任务运行前对预约参数进行动态调整,
|
||||
|
||||
## 什么是 AutoScript
|
||||
在之前的版本中,定时任务只能按照固定的预约参数执行。如果需要在不同日期预约不同时间,
|
||||
或根据当前时间动态调整预约时长,只能手动修改配置。
|
||||
|
||||
在之前的版本中,定时任务只能按照固定的预约参数执行。如果需要在不同日期预约不同座位,或根据时间动态调整预约时长,只能手动修改配置。
|
||||
|
||||
AutoScript 解决了这一问题。它允许你编写简单的脚本,在定时任务执行前自动修改用户变量(如预约日期、开始时间、结束时间等),实现灵活的自动化预约策略。
|
||||
AutoScript 解决了这一问题。它允许你编写简单的脚本,在定时任务执行前自动修改用户变量
|
||||
(如预约日期、开始时间、结束时间等),实现灵活的自动化预约策略。
|
||||
|
||||
## 核心概念
|
||||
|
||||
@@ -21,12 +23,13 @@ AutoScript 的核心工作流程如下:
|
||||
3. **输出数据**:将脚本修改后的参数传递给自动化引擎执行
|
||||
|
||||
<Note>
|
||||
AutoScript 脚本修改的参数仅影响当次执行,不会回写到用户配置文件。下次任务运行时将重新从配置文件读取原始值。
|
||||
AutoScript 脚本修改的参数仅影响当次执行,不会回写到用户配置文件。
|
||||
下次任务运行时将重新从配置文件读取原始值。
|
||||
</Note>
|
||||
|
||||
## 典型应用场景
|
||||
|
||||
- **每日动态日期**:始终预约"明天"的座位,无需每天手动修改日期
|
||||
- **动态日期**:始终预约"明天"的座位,无需每天手动修改日期
|
||||
- **条件切换**:根据是否启用标志决定不同的预约策略
|
||||
- **时间偏移**:在特定时间段自动调整预约开始时间
|
||||
- **批量处理**:配合用户分组,为不同用户设置不同的预约参数
|
||||
@@ -62,7 +65,7 @@ AutoLibrary 提供两种方式编写 AutoScript:
|
||||
</Card>
|
||||
<Card
|
||||
title="函数参考"
|
||||
icon="function-square"
|
||||
icon="function"
|
||||
href="/zh/autoscript/functions"
|
||||
>
|
||||
查看所有可用的日期、时间工具函数及其用法。
|
||||
@@ -74,11 +77,4 @@ AutoLibrary 提供两种方式编写 AutoScript:
|
||||
>
|
||||
了解可操作的目标变量、数据类型与约束规则。
|
||||
</Card>
|
||||
<Card
|
||||
title="集成指南"
|
||||
icon="link"
|
||||
href="/zh/autoscript/integration"
|
||||
>
|
||||
了解如何将 AutoScript 集成到定时任务中。
|
||||
</Card>
|
||||
</CardGroup>
|
||||
@@ -1,137 +0,0 @@
|
||||
---
|
||||
title: "集成指南"
|
||||
description: "AutoScript 与定时任务集成 - 执行流程、作用域与最佳实践"
|
||||
---
|
||||
|
||||
了解如何将 AutoScript 脚本集成到定时任务中,以及脚本的执行时机、作用范围和注意事项。
|
||||
|
||||
## 执行流程
|
||||
|
||||
当定时任务触发时,AutoLibrary 按以下顺序执行:
|
||||
|
||||
1. **读取配置**:从用户配置文件中读取所有用户分组的预约参数
|
||||
2. **遍历用户组**:对每个启用的用户组,遍历其中的每个启用用户
|
||||
3. **执行 AutoScript**:对每个用户运行 AutoScript 脚本,动态调整变量值
|
||||
4. **执行定时任务**:使用调整后的参数运行预约/签到/续约操作
|
||||
|
||||
```text
|
||||
定时任务触发
|
||||
│
|
||||
├─ 用户组 A
|
||||
│ ├─ 用户 1 → 执行 AutoScript → 预约/签到/续约
|
||||
│ └─ 用户 2 → 执行 AutoScript → 预约/签到/续约
|
||||
│
|
||||
└─ 用户组 B
|
||||
├─ 用户 3 → 执行 AutoScript → 预约/签到/续约
|
||||
└─ 用户 4 → 执行 AutoScript → 预约/签到/续约
|
||||
```
|
||||
|
||||
## 作用域
|
||||
|
||||
AutoScript 脚本的作用域限定为单个用户的单次执行:
|
||||
|
||||
- **每次执行独立**:脚本对每个用户独立运行,不同用户之间互不影响
|
||||
- **不修改配置文件**:脚本对变量的修改仅存在于内存中,不会回写到 `user.json`
|
||||
- **下次执行重置**:下次定时任务触发时,从配置文件重新读取原始值
|
||||
|
||||
## 配置方式
|
||||
|
||||
### 在定时任务中指定脚本
|
||||
|
||||
<Steps>
|
||||
<Step title="打开定时任务管理">
|
||||
点击主界面底部的 [<Icon icon="clock" />] 按钮。
|
||||
</Step>
|
||||
<Step title="添加或编辑任务">
|
||||
点击 [**添加任务**] 创建新任务,或右键现有任务选择 [**编辑**]。
|
||||
</Step>
|
||||
<Step title="配置 AutoScript">
|
||||
在编辑对话框中找到 [**AutoScript**] 区域,点击 [**编辑**] 按钮打开内置代码编辑器编写脚本。
|
||||
脚本编写完成后直接内嵌保存至定时任务配置,无需管理外部文件。
|
||||
</Step>
|
||||
<Step title="保存配置">
|
||||
点击 [**确认**] 保存任务配置。
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
{/* TODO: 添加定时任务 AutoScript 配置截图 */}
|
||||

|
||||
|
||||
## 典型示例
|
||||
|
||||
### 示例 1:始终预约明天的座位
|
||||
|
||||
```lua
|
||||
-- 将预约日期设为明天
|
||||
RESERVE_DATE = dateadd(datenow(), 1)
|
||||
|
||||
-- 设置固定时间段
|
||||
RESERVE_BEGIN_TIME = time(9, 0)
|
||||
RESERVE_END_TIME = time(21, 0)
|
||||
```
|
||||
|
||||
### 示例 2:根据星期调整预约策略
|
||||
|
||||
配合定时任务的重复执行功能,可以为不同日子设置不同的预约参数。如果你需要基于实际星期进行判断,可以在脚本中根据日期特性调整:
|
||||
|
||||
```lua
|
||||
-- 始终预约明天
|
||||
RESERVE_DATE = dateadd(datenow(), 1)
|
||||
|
||||
-- 默认时间段
|
||||
RESERVE_BEGIN_TIME = time(9, 0)
|
||||
RESERVE_END_TIME = time(21, 0)
|
||||
```
|
||||
|
||||
### 示例 3:条件性跳过用户
|
||||
|
||||
```lua
|
||||
-- 如果当前时间已经超过上午 10 点,跳过该用户
|
||||
if timenow() > time(10, 0) then
|
||||
USER_ENABLE = false
|
||||
end
|
||||
```
|
||||
|
||||
### 示例 4:根据用户名差异化配置
|
||||
|
||||
```lua
|
||||
if USERNAME == "20250101001" then
|
||||
-- 用户 A 的预约策略
|
||||
RESERVE_BEGIN_TIME = time(8, 0)
|
||||
RESERVE_END_TIME = time(20, 0)
|
||||
end
|
||||
```
|
||||
|
||||
## 最佳实践
|
||||
|
||||
### 先调试,后配置
|
||||
|
||||
在将脚本关联到定时任务之前,使用编辑器的调试运行功能在模拟数据上验证脚本逻辑。
|
||||
|
||||
### 保持脚本简洁
|
||||
|
||||
每个脚本只关注一个明确的目标,避免在一个脚本中处理过多复杂逻辑。如果需要针对不同用户组执行不同逻辑,建议为每个用户组创建独立的定时任务。
|
||||
|
||||
### 注意沙箱限制
|
||||
|
||||
AutoScript 运行在受限的沙箱环境中,不能访问文件系统或执行系统命令。如果脚本需要外部数据(如个人日程表),请使用条件判断和工具函数实现。
|
||||
|
||||
### 验证类型兼容性
|
||||
|
||||
确保所有赋值操作的类型与目标变量声明的类型一致。类型错误会导致脚本执行失败并跳过该用户。
|
||||
|
||||
### 处理边缘情况
|
||||
|
||||
编写脚本时考虑边缘情况:
|
||||
|
||||
```lua
|
||||
-- 确保开始时间不早于 7:30
|
||||
if RESERVE_BEGIN_TIME < time(7, 30) then
|
||||
RESERVE_BEGIN_TIME = time(7, 30)
|
||||
end
|
||||
|
||||
-- 确保结束时间不晚于 22:30
|
||||
if RESERVE_END_TIME > time(22, 30) then
|
||||
RESERVE_END_TIME = time(22, 30)
|
||||
end
|
||||
```
|
||||
@@ -112,7 +112,7 @@ if USER_ENABLE then
|
||||
...
|
||||
end
|
||||
|
||||
-- 等价但不推荐
|
||||
-- 等价
|
||||
if USER_ENABLE == true then
|
||||
...
|
||||
end
|
||||
|
||||
@@ -55,9 +55,9 @@ end
|
||||
```lua
|
||||
-- 使用工具函数创建日期
|
||||
RESERVE_DATE = date(2025, 10, 30) -- 绝对日期
|
||||
RESERVE_DATE = datenow() -- 今天
|
||||
RESERVE_DATE = dateadd(datenow(), 1) -- 明天
|
||||
RESERVE_DATE = strtodate("2025-12-31") -- 从字符串解析
|
||||
RESERVE_DATE = datenow() -- 今天
|
||||
RESERVE_DATE = dateadd(datenow(), 1) -- 明天
|
||||
RESERVE_DATE = strtodate("2025-12-31") -- 从字符串解析
|
||||
```
|
||||
|
||||
<Warning>
|
||||
@@ -108,11 +108,11 @@ AutoScript 引擎会在脚本执行前后验证变量类型。以下情况会导
|
||||
```lua
|
||||
-- 正确:类型匹配
|
||||
RESERVE_DATE = dateadd(datenow(), 1) -- Date = Date
|
||||
USER_ENABLE = true -- Boolean = Boolean
|
||||
USER_ENABLE = true -- Boolean = Boolean
|
||||
|
||||
-- 错误:类型不匹配
|
||||
RESERVE_DATE = "2025-10-30" -- Error: Date ≠ String
|
||||
USER_ENABLE = 1 -- Error: Boolean ≠ Int
|
||||
USER_ENABLE = 1 -- Error: Boolean ≠ Int
|
||||
```
|
||||
|
||||
<Tip>
|
||||
|
||||
Reference in new issue
Block a user