auto-topic.lua Verlihub Сценарий основного уведомления чата

Созданный: 2026/07/02 19:41:27 America/Chicago
К: admin

auto-topic.lua скрипт отправляет настроенные уведомления хаба в основной чат Verlihub через заданный интервал. Используйте его для напоминаний о правилах, примечаний по техническому обслуживанию, ссылок на поддержку, подсказок по командам и коротких сообщений сообщества, для которых не требуется отдельный внешний бот.

Пусть этот скрипт будет небольшим. Он должен отправлять короткие настроенные сообщения, а затем возвращать управление на номер Verlihub. Не добавляйте в этот сценарий длительные задания, запросы к базе данных, внешние HTTP-запросы, сканирование файлов или ожидания блокировки.

Что делает этот скрипт

Скрипт отправляет автоматические сообщения основного чата от настроенного имени бота или идентификатора хаба.

Обычное использование включает в себя:

  • Публикация напоминаний о правилах хаба.
  • Публикация веб-сайта или ссылок на поддержку.
  • Объявление о плановом техническом обслуживании.
  • Напоминание пользователям о доступных командах.
  • Делимся ссылками на сообщество.
  • Отображение вращающихся уведомлений.
  • Публикация сообщений о времени суток.

Пример основного уведомления чата:

<HubNotice> Please review the hub rules with !rules before sharing or chatting.

Требования

Этот скрипт требует:

  • Verlihub установлен и работает.
  • Установлен плагин Verlihub Lua.
  • Плагин Lua включен в Verlihub.
  • Разрешение на загрузку и выгрузку Lua скриптов.
  • Доступный для записи каталог сценариев для Verlihub Lua файлов.

Перед загрузкой скрипта убедитесь, что плагин Lua активен:

!pluglist

Если плагин Lua отсутствует в списке, сначала загрузите или включите его из родительской статьи по установке Lua.

Используйте выделенный каталог сценариев:

mkdir -p /PATH/TO/HUB/scripts

Разместите скрипт по адресу:

/PATH/TO/HUB/scripts/auto-topic.lua

Для производственных систем каталог должен быть доступен для записи только доверенным администраторам или пользователю службы Verlihub. Не делайте каталог общедоступным для записи.

Команды загрузки и выгрузки

Загрузите скрипт:

!luaload /PATH/TO/HUB/scripts/auto-topic.lua

Выгрузите скрипт:

!luaunload /PATH/TO/HUB/scripts/auto-topic.lua

Если вы редактируете скрипт, выгрузите его и загрузите снова:

!luaunload /PATH/TO/HUB/scripts/auto-topic.lua
!luaload /PATH/TO/HUB/scripts/auto-topic.lua

Используйте полный абсолютный путь, если только ваша конфигурация плагина Verlihub Lua не поддерживает относительные пути.

Код сценария

-- Script: auto-topic.lua
-- Purpose: Sends rotating automatic notices to Verlihub main chat.
-- Scope: Lightweight hub notices only.
-- Notes: Keep interval reasonable to avoid chat spam.

botname = "HubNotice"
interval = 900
counter = 0
notice_index = 1

notices = {
    "Welcome to the hub. Please read the rules with !rules.",
    "Need help? Use !help or contact an operator.",
    "Visit our website for updates, guides, and hub information.",
    "Keep main chat respectful and avoid spam or repeated messages."
}

function SendNotice()
    if notices[notice_index] == nil then
        notice_index = 1
    end

    VH:SendToAll("<" .. botname .. "> " .. notices[notice_index])
    notice_index = notice_index + 1

    if notice_index > table.getn(notices) then
        notice_index = 1
    end
end

function OnTimer()
    counter = counter + 1

    if counter >= interval then
        counter = 0
        SendNotice()
    end
end

Опции конфигурации

botname

botname = "HubNotice"

Имя, отображаемое перед автоматическим уведомлением. Выберите понятное имя, чтобы пользователи понимали, что сообщение представляет собой информацию автоматического концентратора.

Примеры:

botname = "HubNotice"
botname = "RulesBot"
botname = "InfoBot"
botname = "Maintenance"

interval

interval = 900

Управляет частотой отправки уведомления сценарием. Предполагаемое значение обычно составляет секунды, в зависимости от того, как таймер Verlihub Lua настроен в вашей среде.

Рекомендуемые значения:

ЦенитьЗначение
300Каждые 5 минут.
600Каждые 10 минут.
900Каждые 15 минут.
1800Каждые 30 минут.
3600Каждые 60 минут.

Для производственных центров, 900 или 1800 обычно безопаснее, чем короткий интервал. Избегайте значений, которые делают концентратор шумным:

interval = 10

Уведомление каждые 10 секунд слишком агрессивно для обычного основного чата.

counter

counter = 0

Внутренний счетчик, используемый сценарием. Не меняйте это значение, если вы не изменяете логику сценария.

notice_index

notice_index = 1

Отслеживает, какое уведомление следует отправить следующим. Оставьте это в 1 если только вы не хотите, чтобы сценарий начинался с другого сообщения.

notices

notices = {
    "Welcome to the hub. Please read the rules with !rules.",
    "Need help? Use !help or contact an operator.",
    "Visit our website for updates, guides, and hub information.",
    "Keep main chat respectful and avoid spam or repeated messages."
}

Список сообщений, которые ротируются в основном чате. Каждое уведомление должно быть кратким, полезным и не отвлекающим от работы.

Примеры хороших уведомлений:

notices = {
    "Use !rules to view hub rules.",
    "Use !help to see available commands.",
    "Operators are marked in the user list if you need assistance.",
    "Please keep main chat friendly and on topic."
}

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

Примеры конфигураций

Напоминание об основных правилах

botname = "RulesBot"
interval = 1800
notices = {
    "Please read the hub rules with !rules.",
    "Do not spam main chat or repeat the same message.",
    "Respect other users and follow operator instructions."
}

Уведомление о веб-сайте и поддержке

botname = "InfoBot"
interval = 3600
notices = {
    "Visit the website for hub guides, updates, and support.",
    "Need help? Use !help or contact an operator.",
    "Check the articles section for Verlihub setup notes and Lua scripts."
}

Уведомление о техническом обслуживании

botname = "Maintenance"
interval = 900
notices = {
    "Scheduled maintenance may occur during low-traffic hours.",
    "If the hub disconnects during maintenance, reconnect after a few minutes.",
    "Check the website for maintenance updates."
}

Уведомление сообщества

botname = "Community"
interval = 1800
notices = {
    "Welcome to the hub. Keep chat friendly and helpful.",
    "Use main chat for general discussion. Contact operators for support issues.",
    "Invite trusted users and help keep the hub useful."
}

Для большинства концентраторов используйте 15-минутный или 30-минутный интервал:

botname = "HubNotice"
interval = 1800
notices = {
    "Welcome to the hub. Use !rules to review the hub rules.",
    "Need help? Use !help or contact an operator.",
    "Keep main chat respectful and avoid spam."
}

Благодаря этому уведомления будут видны, не переполняя чат. Для загруженных узлов используйте:

interval = 3600

Для тихих хабов используйте:

interval = 1800

Автоматизация основного чата должна поддерживать сообщество, а не мешать ему.

Тестирование сценария

После загрузки скрипта подтвердите, что:

  • Скрипт загружается без ошибок.
  • Уведомление появится в основном чате.
  • Уведомления чередуются в ожидаемом порядке.
  • Интервал не слишком агрессивный.
  • Имя бота понятно.
  • Скрипт выгружается чисто.
  • Перезагрузка сценария не приводит к созданию повторяющихся таймеров или повторяющихся уведомлений.

Сначала протестируйте короткий интервал, затем измените его на производственный интервал.

Пример настройки теста:

interval = 30

После тестирования измените его обратно:

interval = 1800

Затем перезагрузите скрипт.

Поиск неисправностей

Скрипт не загружается

Убедитесь, что плагин Lua активен:

!pluglist

Проверьте правильность пути к файлу:

!luaload /PATH/TO/HUB/scripts/auto-topic.lua

Используйте абсолютный путь, если относительные пути не работают.

Уведомления не появляются

Проверять:

  • Плагин Lua загружен.
  • Путь к скрипту правильный.
  • Ваша версия плагина Verlihub Lua поддерживает функцию таймера.
  • При тестировании интервал не слишком велик.
  • notices таблица содержит хотя бы одно сообщение.

Временно используйте:

interval = 30

Затем перезагрузите скрипт и дождитесь следующего уведомления.

Уведомления появляются слишком часто

Увеличьте интервал.

interval = 1800

или:

interval = 3600

Избегайте коротких интервалов в рабочем хабе.

Появляются повторяющиеся уведомления

Обычно это означает, что скрипт был загружен более одного раза или старый экземпляр выгрузился неправильно.

Выгрузите скрипт:

!luaunload /PATH/TO/HUB/scripts/auto-topic.lua

Затем загрузите его снова:

!luaload /PATH/TO/HUB/scripts/auto-topic.lua

Если дубликаты продолжаются, перезапустите плагин Lua или службу Verlihub во время периода обслуживания.

Ошибки сценария после редактирования уведомлений

Проверьте синтаксис Lua. Каждая строка уведомления должна заканчиваться запятой, за исключением последней строки, в которой она может отсутствовать.

Правильный:

notices = {
    "First notice.",
    "Second notice.",
    "Third notice."
}

Неверно:

notices = {
    "First notice."
    "Second notice."
}

В неправильном примере отсутствует запятая после первого сообщения.

Примечания по безопасности

Этот сценарий должен оставаться легким. Не добавляйте:

  • Внешние HTTP-запросы.
  • Запросы к базе данных.
  • Сканирование файлов.
  • Длинные петли.
  • Блокировка вызовов сна.
  • Тяжелая обработка для каждого пользователя.

Скрипт должен только чередовать настроенные уведомления и отправлять их через разумные интервалы.

Примечания по техническому обслуживанию

Сохраните резервную копию перед изменением сценария:

cp /PATH/TO/HUB/scripts/auto-topic.lua /PATH/TO/HUB/scripts/auto-topic.lua.bak

Если вы используете Git:

cd /PATH/TO/HUB/scripts
git add auto-topic.lua
git commit -m "Update auto-topic.lua notices"

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

Рекомендуемые правила написания уведомлений

Хорошие уведомления короткие и полезные.

Рекомендуется:

  • Одна идея на одно уведомление.
  • Четкая формулировка.
  • Никаких повторяющихся знаков препинания.
  • Никаких сообщений, написанных заглавными буквами.
  • Никаких слишком частых публикаций.
  • Никаких длинных абзацев в основном чате.

Избегать:

  • Публикация каждые несколько секунд.
  • Повторное размещение одного и того же сообщения.
  • Использование уведомлений только в качестве рекламы.
  • Отправка больших блоков правил в основной чат.
  • Слишком часто прерываем активные разговоры.

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