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"
При изменении только имени бота, уведомлений или интервала никаких изменений логики не требуется.
Рекомендуемые правила написания уведомлений
Хорошие уведомления короткие и полезные.
Рекомендуется:
- Одна идея на одно уведомление.
- Четкая формулировка.
- Никаких повторяющихся знаков препинания.
- Никаких сообщений, написанных заглавными буквами.
- Никаких слишком частых публикаций.
- Никаких длинных абзацев в основном чате.
Избегать:
- Публикация каждые несколько секунд.
- Повторное размещение одного и того же сообщения.
- Использование уведомлений только в качестве рекламы.
- Отправка больших блоков правил в основной чат.
- Слишком часто прерываем активные разговоры.