---
title: "变量参考"
description: "AutoScript 可操作的目标变量完整参考 - 数据类型与映射关系"
---
AutoScript 通过操作一组预定义的变量来调整预约参数。每个变量有固定的数据类型,赋值时必须保持类型一致。
## 变量列表
| 显示名称 | Lua 变量名 | 类型 | 说明 |
| --- | --- | --- | --- |
| 用户名 | `USERNAME` | String | 用户的学号 |
| 用户启用 | `USER_ENABLE` | Boolean | 是否启用该用户 |
| 预约日期 | `RESERVE_DATE` | Date | 座位预约日期 |
| 预约开始时间 | `RESERVE_BEGIN_TIME` | Time | 预约开始时间 |
| 预约结束时间 | `RESERVE_END_TIME` | Time | 预约结束时间 |
变量名区分大小写。`USERNAME`、`username` 和 `UserName` 是三个不同的标识符。
请始终使用全大写变量名。
## 数据类型
### String(字符串)
文本类型,用于表示学号。
```lua
USERNAME = "20250101001"
```
限制:
- 只能通过直接赋值修改
- 不支持字符串拼接
### Boolean(布尔)
真/假值,用于控制用户是否被处理。
```lua
USER_ENABLE = true -- 启用用户
USER_ENABLE = false -- 跳过用户
-- 可直接作为条件判断
if USER_ENABLE then
-- 用户启用时执行
end
```
### Date(日期)
日期值,在 Lua 内部以数值形式存储(Unix 时间戳),在配置文件中以 `"YYYY-MM-DD"` 字符串形式存储。
```lua
-- 使用工具函数创建日期
RESERVE_DATE = date(2025, 10, 30) -- 绝对日期
RESERVE_DATE = datenow() -- 今天
RESERVE_DATE = dateadd(datenow(), 1) -- 明天
RESERVE_DATE = strtodate("2025-12-31") -- 从字符串解析
```
不要直接对日期变量使用算术运算(如 `RESERVE_DATE + 86400`)。
请使用 `dateadd()` 函数。
### Time(时间)
时间值,在 Lua 内部以分钟数形式存储(0-1439),在配置文件中以 `"HH:MM"` 字符串形式存储。
```lua
-- 使用工具函数创建时间
RESERVE_BEGIN_TIME = time(9, 0) -- 09:00
RESERVE_END_TIME = time(21, 30) -- 21:30
RESERVE_BEGIN_TIME = timeadd(timenow(), 60) -- 当前时间 + 1 小时
RESERVE_END_TIME = strtotime("22:00") -- 从字符串解析
```
时间值在内部是以分钟为单位的整数值。`time(9, 30)` 等价于 `570`(9*60 + 30)。
虽然可以直接使用数值,但建议始终使用工具函数以确保可读性和正确性。
## 虚拟变量
以下两个变量存在于可视化编排器中,但在实际 Lua 脚本中不可用。编排器会在生成代码时将它们转换为对应的函数调用:
| 虚拟变量 | 编排器中的含义 | 生成的 Lua 代码 |
| --- | --- | --- |
| `CURRENT_DATE` | 当前日期 | `datenow()` |
| `CURRENT_TIME` | 当前时间 | `timenow()` |
在代码编辑器中编写脚本时,请直接使用 `datenow()` 和 `timenow()` 函数,
不要使用 `CURRENT_DATE` 或 `CURRENT_TIME`。
## 类型安全
AutoScript 引擎会在脚本执行前后验证变量类型。以下情况会导致错误:
- 将字符串赋给日期变量
- 将布尔值赋给整数变量
- 将浮点数赋给需要整数的变量
- 变量值变为 `nil`
```lua
-- 正确:类型匹配
RESERVE_DATE = dateadd(datenow(), 1) -- Date = Date
USER_ENABLE = true -- Boolean = Boolean
-- 错误:类型不匹配
RESERVE_DATE = "2025-10-30" -- Error: Date ≠ String
USER_ENABLE = 1 -- Error: Boolean ≠ Int
```
如果脚本执行后某个变量值未改变,脚本中对该变量的赋值被跳过了,请检查赋值表达式的结果类型是否与变量声明的类型匹配。