Эта библиотека собирает скрипты Lua, написанные для хабов Verlihub. Каждый скрипт добавляет одну небольшую функцию хаба без изменения исходного кода Verlihub C++ или компиляции собственного плагина.
Используйте эти статьи для ботов отображения, вспомогательных команд, синхронизированных сообщений, записей в списках пользователей, помощников проверки и небольшой автоматизации. Оставляйте тяжелую работу за пределами процесса хаба и используйте Lua только для поведения хаба, которое должно выполняться внутри Verlihub.
Цель этой библиотеки
Библиотека существует для того, чтобы владелец хаба мог просмотреть скрипт, понять, что он меняет, скопировать его в ожидаемый каталог, настроить документированные настройки, загрузить, протестировать и снова отключить без догадок.
В каждой статье сценария должно быть указано:
- Что делает скрипт.
- Какую Verlihub функцию он меняет или добавляет.
- Создает ли он бота, команду, таймер, перехватчик, запись в списке пользователей или помощник проверки.
- Куда следует поместить файл сценария.
- Как скрипт загружается, перезагружается, выгружается или отключается.
- Какие настройки безопасно редактировать.
- От какого разрешения плагина или хаба Verlihub зависит скрипт.
- Известные ограничения, примечания к версии и производственные предупреждения.
Рекомендуемые стандарты сценариев
Скрипты в этой библиотеке должны оставаться небольшими, читаемыми и иметь контроль версий. Один файл Lua должен выполнять одну работу. Не смешивайте бот-часы, команду правил, проверку на спам и очистку базы данных в одном файле, если в статье не объясняется, почему эти действия должны осуществляться вместе.
- Используйте одну основную цель для каждого сценария.
- Размещайте четкие комментарии в верхней части файла.
- Сгруппируйте настраиваемые значения вверху.
- Не указывайте жестко кодированные частные пути, если они не объяснены в статье.
- Избегайте ненужной записи в базу данных.
- Избегайте блокировки сетевых вызовов из событий хаба.
- Избегайте тяжелых циклов внутри перехватчиков входа в систему, чата или списка пользователей.
- Проясните поведение при запуске и завершении работы.
- Документируйте команды загрузки, перезагрузки и выгрузки.
Для производственных хабов обычно легче отлаживать, отключать и заменять сценарии меньшего размера, чем один большой файл, управляющий несвязанным поведением хаба.
Предлагаемый заголовок сценария
Начинайте каждый скрипт с короткого блока комментариев. Заголовок должен сообщить следующему оператору, что это за файл, прежде чем скрипт коснется активного хаба.
-- Script: time.lua
-- Purpose: Displays a clock-like bot entry in the Verlihub user list.
-- Scope: User-list display only.
-- Author: PWiAM
-- Notes: Test on a private hub before production use.
Рекомендуемый формат статьи сценария
Каждая дочерняя статья в этом разделе должна иметь одинаковую форму, чтобы сценарии можно было быстро сравнивать и просматривать.
- Обзор.
- Требования.
- Установка.
- Конфигурация.
- Загрузка скрипта.
- Тестирование.
- Выгрузка или отключение.
- Поиск неисправностей.
- Полный сценарий.
- Связанные страницы.
Установка скриптов
Точное местоположение зависит от пути установки Verlihub, но пользовательские файлы Lua должны находиться в каталоге, принадлежащем пользователю службы, запускающему хаб.
sudo mkdir -p /usr/local/etc/verlihub/lua
sudo chown -R verlihub:verlihub /usr/local/etc/verlihub/lua
sudo chmod 750 /usr/local/etc/verlihub/lua
Затем поместите каждый скрипт в этот каталог:
/usr/local/etc/verlihub/lua/time.lua
Если ваша служба работает под другим пользователем, измените владельца этой учетной записи. Не используйте chmod 777 /usr/local/etc/verlihub/lua. Файлы Lua запускаются внутри процесса хаба, поэтому доступ на запись принадлежит только доверенным администраторам.
Загрузка и перезагрузка скриптов
Скрипты Lua требуют, чтобы сначала был установлен и включен плагин Lua. Если плагин не загружен, просмотрите родительскую статью по настройке Lua перед загрузкой файлов сценариев.
Полезные проверки плагинов включают в себя:
!pluglist!lstplug
Используйте рабочий процесс с небольшими изменениями при редактировании живого сценария:
- Сохраните резервную копию текущего рабочего файла.
- Измените одну настройку или одну функцию.
- Перезагрузите только этот скрипт, если ваша сборка его поддерживает.
- Проверьте вывод хаба и журналы Verlihub.
- Быстро вернитесь, если пользователи видят ошибки, дубликаты ботов или повторяющиеся сообщения чата.
Если команды перезагрузки скрипта недоступны в вашей сборке Verlihub, перезапустите или перезагрузите плагин Lua в соответствии с командами управления плагинами вашего сервера.
Безопасное тестирование сценариев
Протестируйте сценарии Lua в частном хабе или в окне тихого обслуживания, прежде чем использовать их в рабочей среде.
- Убедитесь, что скрипт загружается без синтаксических ошибок.
- Убедитесь, что это не заполняет основной чат.
- Убедитесь, что он не создает дубликатов ботов или повторяющихся записей в списке пользователей.
- Убедитесь, что после перезагрузки он ведет себя правильно.
- Убедитесь, что после перезапуска хаба все работает правильно.
- Подтвердите, что операторы могут быстро отключить его.
- Для командных сценариев протестируйте обычные пользователи и учетные записи операторов.
- Для синхронизированных сообщений или записей в списке пользователей проверьте интервал, чтобы сценарий не создавал шума или нагрузки.
Указания по производственной безопасности
Код Lua выполняется внутри процесса хаба. Плохой скрипт может повлиять на чат, вход в систему, обновление списка пользователей или отключение плагина.
Избегать:
- Бесконечные циклы.
- Длительный сон внутри обработчиков событий.
- Чтение больших файлов во время пользовательских событий.
- Блокировка внешних HTTP-запросов.
- Тяжелые запросы к базе данных из чата или перехватчиков входа в систему.
- Повторные широковещательные сообщения без ограничений.
- Скрипты, которые невозможно выгрузить чисто.
Предпочитать:
- Небольшие обработчики событий.
- Очистите значения конфигурации.
- Консервативные таймеры.
- Простая логика команд.
- Ведение журнала только тогда, когда оно дает оператору полезную информацию.
- Легкий откат.
Если задача выполняется долго, переместите ее за пределы Verlihub и позвольте Lua запустить или отобразить результат.
Контроль версий
По возможности сохраняйте пользовательские скрипты в Git. Небольшого репозитория в каталоге скриптов достаточно для многих хабов.
cd /usr/local/etc/verlihub/lua
git init
git add .
git commit -m "Initial Verlihub Lua scripts"
Прежде чем редактировать производственный скрипт, проверьте, что уже изменено:
git status
git diff
После тестирования изменений:
git add time.lua
git commit -m "Update time.lua clock display"
Это дает следующему оператору историю изменений и возможность быстрого отката.
Доступные сценарии
time.lua Verlihub скрипт часов списка пользователей создает небольшую запись в списке пользователей, похожую на бота, которая отображает текущее время.
Используйте его, когда хабу требуется видимая запись часов без запуска отдельного процесса бота или внешней службы. Это первый поддерживаемый пример в этой библиотеке, и его можно использовать в качестве образца для других сценариев, ориентированных на отображение.
Добавление дополнительных скриптов
Новые сценарии следует добавлять в качестве дочерних статей в этом разделе, а не вставлять на эту индексную страницу. К хорошим кандидатам относятся:
- Скрипт приветственного сообщения.
- Скрипт напоминания правил.
- Командный сценарий помощника оператора.
- Скрипт планового анонса.
- Скрипт отображения количества пользователей.
- Скрипт-помощник по борьбе со спамом.
- Командный сценарий информации о хабе.
- Скрипт уведомления о режиме обслуживания.
Каждая новая статья должна включать примечания по установке, значения конфигурации, этапы тестирования, этапы выгрузки и полный список сценариев.