Созданный: 2026/07/02 19:41:27 America/Chicago
К: admin
Изменено: 2026/07/03 16:24:56 America/Chicago
К: admin

Скрипт 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

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"

При изменении только префикса, постфикса, формата, интервала или смещения никаких изменений логики кода не требуется.

Родительская Страница