创建: 2026/07/02 19:41:27 America/Chicago
作者: admin
修改: 2026/07/03 16:24:56 America/Chicago
作者: admin

time.lua 脚本创建一个小的用户列表条目,其名称会更改以显示当前时间。当 Verlihub hub 需要为国际用户、区域房间或跨时区协调的操作员提供可见的时区标记时,请使用它。

该脚本不需要单独的外部机器人进程。它使用 Verlihub Lua 插件在 hub 用户列表中创建一个类似机器人的条目。时钟条目可以如下所示:

!_US_06:30:00PM

您可以在加载脚本之前更改前缀、后缀、时间格式、更新间隔和时区偏移量。

该脚本的作用

该脚本由三个部分构建显示名称:

prefix + current time + postfix

输出示例:

!_US_06:30:00PM

可见的用户列表条目在计时器上更新,因此显示的时间保持最新。

使用此脚本用于:

  • 显示 hub 时区。
  • 显示区域时钟。
  • 帮助国际用户协调时间。
  • 在用户列表中创建一个简单的视觉标记。
  • 添加小型实用程序机器人而无需运行外部软件。

要求

该脚本需要:

  • Verlihub 已安装并正在运行。
  • 已安装 Verlihub Lua 插件。
  • Lua 插件在 Verlihub 中启用。
  • 加载和卸载 Lua 脚本的权限。
  • Verlihub Lua 文件的可写脚本目录。

在加载脚本之前,请确认 Lua 插件处于活动状态:

!pluglist

如果未列出 Lua 插件,请首先从父级 Lua 设置文章中加载或启用它。

使用专用脚本目录:

mkdir -p /PATH/TO/HUB/scripts

将脚本放置在:

/PATH/TO/HUB/scripts/time.lua

对于生产系统,该目录只能由受信任的管理员或 Verlihub 服务用户写入。不要使该目录成为全局可写的。

加载和卸载命令

加载脚本:

!luaload /PATH/TO/HUB/scripts/time.lua

卸载脚本:

!luaunload /PATH/TO/HUB/scripts/time.lua

如果您编辑脚本,请将其卸载并再次加载:

!luaunload /PATH/TO/HUB/scripts/time.lua
!luaload /PATH/TO/HUB/scripts/time.lua

使用完整的绝对路径,除非您的 Verlihub Lua 插件配置支持相对路径。

脚本代码

name = ''
class = 3
description = 'Time Bot: US'
speed = '100'
email = ''
share = '0'
prefix = '!_US_'
postfix = ''
interval = 10
counter = 0
format = "%I:%M:%S%p"
offset = -5

function GetTime()
    return os.date(format, os.time() + offset * 60 * 60)
end

function GetName()
    time = GetTime()
    return prefix..time..postfix
end

配置选项

name

name = ''

类似机器人条目的基本名称值。在此脚本中,可见名称由以下方式生成 GetName(), 所以 name 通常可以保持为空。

class

class = 3

控制类似机器人条目的显示类别或配置文件级别。类值的确切含义取决于hub配置。在许多hub设置中,较高的类别编号代表较高的用户角色。

使用适合您希望时钟条目在用户列表中显示方式的类值。

description

description = 'Time Bot: US'

显示类似机器人条目的描述。用它来解释条目代表什么。

description = 'Time Bot: US'
description = 'Time Bot: UTC'
description = 'Hub Clock'
description = 'Server Time'

speed

speed = '100'

为类似机器人的条目显示的连接速度值。这主要是装饰性的。它不控制脚本更新的频率。

email

email = ''

显示类似机器人条目的电子邮件字段。除非您想显示联系地址,否则请将其留空。

share

share = '0'

为类似机器人的条目显示的共享大小。对于时钟机器人来说,0 是适当的,因为它不是真正的文件共享用户。

prefix

prefix = '!_US_'

放置在生成时间之前的文本。这使得时钟在用户列表中易于识别。

prefix = '!_US_'
prefix = '!_UTC_'
prefix = '[TIME] '
prefix = 'Clock_'

选择在您的hub 用户列表中清晰排序的前缀。

postfix

postfix = ''

放置在生成时间之后的文本。

postfix = ''
postfix = '_EST'
postfix = '_UTC'
postfix = ' HubTime'

interval

interval = 10

控制脚本更新的频率,通常以秒为单位。保持合理的间隔。对于hub 用户列表条目来说,每秒更新一次通常是不必要的。

  • 10:对于可见的基于秒的时钟很有用。
  • 30:对于许多hub来说是一个很好的平衡。
  • 60:最适合仅显示分钟的时钟。

如果您的格式不显示秒,请使用 60.

format = "%I:%M%p"
interval = 60

counter

counter = 0

脚本使用的内部计数器。除非您要修改脚本逻辑,否则请勿更改此设置。

format

format = "%I:%M:%S%p"

控制时间的显示方式。这使用 Lua os.date 格式化。默认格式显示 12 小时制时间,带秒和 AM/PM。

输出示例:

06:30:00PM

常见格式:

format = "%I:%M:%S%p"      -- 06:30:00PM
format = "%I:%M%p"         -- 06:30PM
format = "%H:%M:%S"        -- 18:30:00
format = "%H:%M"           -- 18:30
format = "%Y-%m-%d %H:%M"  -- 2026-07-02 18:30

对于用户列表条目,较短的格式通常更易于阅读。

offset

offset = -5

时区与服务器时间的差异(以小时为单位)。该脚本使用以下方法计算时间:

os.time() + offset * 60 * 60

示例:

offset = 0    -- same as server time
offset = -5   -- five hours behind server time
offset = 1    -- one hour ahead of server time
offset = 5.5  -- five and a half hours ahead, if fractional offsets work in your Lua environment

这是一个固定的偏移量。除非调整服务器时间和偏移量,否则它不会自动处理夏令时规则。对于夏令时更改,请在需要时更新偏移量。

配置示例

美国东部时间风格

description = 'Time Bot: US Eastern'
prefix = '!_US_'
postfix = ''
interval = 60
format = "%I:%M%p"
offset = -5

显示示例:

!_US_06:30PM

世界标准时间

description = 'Time Bot: UTC'
prefix = '!_UTC_'
postfix = ''
interval = 60
format = "%H:%M"
offset = 0

显示示例:

!_UTC_23:30

24 小时 hub 时钟

description = 'Hub Clock'
prefix = '!_TIME_'
postfix = ''
interval = 60
format = "%H:%M"
offset = 0

显示示例:

!_TIME_18:30

对于大多数hub,使用仅分钟时钟:

prefix = '!_US_'
postfix = ''
interval = 60
format = "%I:%M%p"
offset = -5

这减少了不必要的更新,同时保持时钟可读。

仅当您想要实时时钟效果时才使用秒:

interval = 10
format = "%I:%M:%S%p"

对于hub 用户列表条目来说,一秒的更新间隔通常是不必要的:

interval = 1

测试脚本

加载脚本后,检查hub 用户列表中生成的时间条目。

确认:

  • 该条目仅出现一次。
  • 显示的时间是正确的。
  • 前缀和后缀看起来是正确的。
  • 更新间隔不太激进。
  • 卸载脚本后该条目消失。
  • 重新加载脚本不会创建重复项。

如果时间错误,请检查服务器时区和配置的偏移量。

在服务器上,检查当前系统时间:

date
timedatectl

故障排除

脚本无法加载

检查 Lua 插件是否处于活动状态:

!pluglist

检查文件路径是否正确:

!luaload /PATH/TO/HUB/scripts/time.lua

如果相对路径不起作用,请使用绝对路径。

时间不正确

查看:

  • 服务器时区。
  • offset 价值。
  • 夏令时。
  • 服务器时钟是否同步。

服务器检查:

date
timedatectl

如果服务器时间正确但显示的时钟错误,请调整 offset.

该脚本创建重复条目

卸载脚本并确认旧条目消失:

!luaunload /PATH/TO/HUB/scripts/time.lua

然后再次加载:

!luaload /PATH/TO/HUB/scripts/time.lua

如果仍有重复项,请在维护时段重新启动 Lua 插件或 Verlihub 服务。

时钟更新太频繁

增加间隔。

interval = 60
format = "%I:%M%p"

如果显示秒,请使用:

interval = 10
format = "%I:%M:%S%p"

用户对条目感到困惑

让前缀或描述更清晰。

prefix = '!_HUB_TIME_'
description = 'Hub Time Clock'

安全注意事项

这个脚本很小,但它仍然在 Verlihub Lua 环境中运行。让脚本专注于计算当前时间和更新显示名称。

不要添加:

  • 外部 HTTP 请求。
  • 数据库查询。
  • 文件扫描。
  • 长循环。
  • 阻止睡眠呼叫。

保养注意事项

更改脚本之前保留备份:

cp /PATH/TO/HUB/scripts/time.lua /PATH/TO/HUB/scripts/time.lua.bak

如果使用 Git:

cd /PATH/TO/HUB/scripts
git add time.lua
git commit -m "Update time.lua clock settings"

仅更改前缀、后缀、格式、间隔或偏移量时,不需要更改代码逻辑。

父页面