跳转到主要内容
AutoScript 通过操作一组预定义的变量来调整预约参数。每个变量有固定的数据类型,赋值时必须保持类型一致。

变量列表

显示名称Lua 变量名类型说明
用户名USERNAMEString用户的学号
用户启用USER_ENABLEBoolean是否启用该用户
预约日期RESERVE_DATEDate座位预约日期
预约开始时间RESERVE_BEGIN_TIMETime预约开始时间
预约结束时间RESERVE_END_TIMETime预约结束时间
变量名区分大小写。USERNAMEusernameUserName 是三个不同的标识符。 请始终使用全大写变量名。

数据类型

String(字符串)

文本类型,用于表示学号。
USERNAME = "20250101001"
限制:
  • 只能通过直接赋值修改
  • 不支持字符串拼接

Boolean(布尔)

真/假值,用于控制用户是否被处理。
USER_ENABLE = true   -- 启用用户
USER_ENABLE = false  -- 跳过用户

-- 可直接作为条件判断
if USER_ENABLE then
    -- 用户启用时执行
end

Date(日期)

日期值,在 Lua 内部以数值形式存储(Unix 时间戳),在配置文件中以 "YYYY-MM-DD" 字符串形式存储。
-- 使用工具函数创建日期
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" 字符串形式存储。
-- 使用工具函数创建时间
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_DATECURRENT_TIME

类型安全

AutoScript 引擎会在脚本执行前后验证变量类型。以下情况会导致错误:
  • 将字符串赋给日期变量
  • 将布尔值赋给整数变量
  • 将浮点数赋给需要整数的变量
  • 变量值变为 nil
-- 正确:类型匹配
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
如果脚本执行后某个变量值未改变,脚本中对该变量的赋值被跳过了,请检查赋值表达式的结果类型是否与变量声明的类型匹配。