Скрипт time.lua создает небольшую запись в списке пользователей, имя которой меняется, чтобы отображать текущее время. Используйте его, когда хабу Verlihub требуется видимый маркер часового пояса для международных пользователей, региональных комнат или операторов, которые координируют свои действия в разных часовых поясах.
Скрипт не требует отдельного внешнего процесса бота. Он использует плагин Verlihub Lua для создания записи, похожей на бота, в списке пользователей хаба. Запись часов может выглядеть так:
!_US_06:30:00PM
Перед загрузкой скрипта вы можете изменить префикс, постфикс, формат времени, интервал обновления и смещение часового пояса.
Что делает этот скрипт
Скрипт строит отображаемое имя из трех частей:
prefix + current time + postfix
Пример вывода:
!_US_06:30:00PM
Видимая запись списка пользователей обновляется по таймеру, поэтому отображаемое время остается текущим.
Используйте этот скрипт для:
- Показан часовой пояс хаба.
- Показаны региональные часы.
- Помогаем международным пользователям координировать время.
- Создание простого визуального маркера в списке пользователей.
- Добавление небольшого бота-утилиты без запуска внешнего ПО.
Требования
Этот скрипт требует:
- 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
Управляет отображаемым классом или уровнем профиля записи, похожей на бота. Точное значение значений класса зависит от конфигурации хаба. Во многих конфигурациях хаба более высокие номера классов представляют повышенные роли пользователей.
Используйте значение класса, которое соответствует тому, как вы хотите, чтобы запись часов отображалась в списке пользователей.
description
description = 'Time Bot: US'
Описание, показанное для записи, похожей на бота. Используйте это, чтобы объяснить, что представляет собой запись.
description = 'Time Bot: US'
description = 'Time Bot: UTC'
description = 'Hub Clock'
description = 'Server Time'
speed
speed = '100'
Значение скорости соединения, отображаемое для записи, похожей на бота. Это в основном косметический характер. Он не контролирует частоту обновления сценария.
email = ''
Поле электронной почты, отображаемое для записи, похожей на бот. Оставьте это поле пустым, если вы не хотите отображать контактный адрес.
share
share = '0'
Размер общего ресурса, отображаемый для записи, похожей на бот. Для часового бота 0 подходит, поскольку он не является настоящим пользователем файлового обмена.
prefix
prefix = '!_US_'
Текст, размещенный перед сгенерированным временем. Это позволяет легко идентифицировать часы в списке пользователей.
prefix = '!_US_'
prefix = '!_UTC_'
prefix = '[TIME] '
prefix = 'Clock_'
Выберите префикс, который будет четко отображаться в списке пользователей вашего хаба.
postfix
postfix = ''
Текст, размещенный после сгенерированного времени.
postfix = ''
postfix = '_EST'
postfix = '_UTC'
postfix = ' HubTime'
interval
interval = 10
Управляет частотой обновления сценария, обычно в секундах. Соблюдайте разумный интервал. Обновление каждую секунду обычно не требуется для записи списка пользователей хаба.
10: полезно для видимых секундных часов.30: хороший баланс для многих хабов.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
Часы UTC
description = 'Time Bot: UTC'
prefix = '!_UTC_'
postfix = ''
interval = 60
format = "%H:%M"
offset = 0
Пример отображения:
!_UTC_23:30
24-часовые часы хаба
description = 'Hub Clock'
prefix = '!_TIME_'
postfix = ''
interval = 60
format = "%H:%M"
offset = 0
Пример отображения:
!_TIME_18:30
Рекомендуемые производственные настройки
Для большинства хабов используйте только минутные часы:
prefix = '!_US_'
postfix = ''
interval = 60
format = "%I:%M%p"
offset = -5
Это уменьшает количество ненужных обновлений, сохраняя при этом читаемость часов.
Используйте секунды только тогда, когда вам нужен эффект живых часов:
interval = 10
format = "%I:%M:%S%p"
Для записи списка пользователей хаба обычно не требуется интервал обновления в одну секунду:
interval = 1
Тестирование сценария
После загрузки скрипта проверьте список пользователей хаба на наличие сгенерированной записи времени.
Подтвердите это:
- Запись появляется только один раз.
- Отображаемое время правильное.
- Префикс и постфикс выглядят правильно.
- Интервал обновления не слишком агрессивный.
- Запись исчезает после выгрузки скрипта.
- Перезагрузка скрипта не создает дубликатов.
Если время неверное, проверьте часовой пояс сервера и настроенное смещение.
На сервере проверьте текущее системное время:
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"
При изменении только префикса, постфикса, формата, интервала или смещения никаких изменений логики кода не требуется.