该库收集了为 Verlihub 集线器编写的 Lua 脚本。每个脚本都添加了一项小型集线器功能,无需更改 Verlihub C++ 源代码或编译自定义插件。
将这些文章用于显示机器人、帮助程序命令、定时消息、用户列表条目、验证帮助程序和小型自动化。将繁重的工作保留在集线器进程之外,只在必须由 Verlihub 内部执行的集线器行为上使用 Lua。
该库的目的
该库的存在是为了让集线器所有者可以查看脚本,了解它更改的内容,将其复制到预期目录中,调整记录的设置,加载它,测试它,然后再次禁用它,而无需猜测。
每篇脚本文章应注明:
- 脚本的作用。
- 它更改或添加了哪些 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 脚本需要首先安装并启用 Verlihub Lua 插件。如果插件未加载,请在加载脚本文件之前查看父级 Lua 设置文章。
有用的插件检查包括:
!pluglist!lstplug
编辑实时脚本时使用小改动工作流程:
- 保存当前工作文件的备份。
- 更改一项设置或一项功能。
- 如果您的构建支持该脚本,则仅重新加载该脚本。
- 检查集线器输出和 Verlihub 日志。
- 如果用户看到错误、重复的机器人或重复的聊天输出,请快速恢复。
如果脚本重新加载命令在您的 Verlihub 构建中不可用,请根据服务器的插件管理命令重新启动或重新加载 Lua 插件。
安全测试脚本
在生产中依赖它们之前,请在专用集线器或安静维护窗口上测试 Lua 脚本。
- 确认脚本加载没有语法错误。
- 确认它不会淹没主聊天。
- 确认它不会创建重复的机器人或重复的用户列表条目。
- 重新加载后确认其行为正常。
- 确认集线器重新启动后其行为正常。
- 确认操作员可以快速禁用它。
- 对于命令脚本,请使用普通用户和操作员帐户进行测试。
- 对于定时消息或用户列表条目,请测试间隔,以便脚本不会产生噪音或负载。
安全生产须知
Lua 代码在 hub 进程内运行。错误的脚本可能会影响聊天、登录、用户列表更新或插件关闭。
避免:
- 无限循环。
- 在事件处理程序中长时间休眠。
- 用户事件期间读取大文件。
- 阻止外部 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 用户列表时钟脚本 创建一个类似机器人的小用户列表条目,显示当前时间。
当集线器需要可见的时钟条目而不运行单独的机器人进程或外部服务时,请使用它。它是该库中第一个维护的示例,可以用作其他面向显示的脚本的模式。
添加更多脚本
新脚本应作为子文章添加到此部分下,而不是粘贴到此索引页中。好的候选人包括:
- 欢迎留言脚本。
- 规则提醒脚本。
- 操作员帮助命令脚本。
- 预定的公告脚本。
- 用户计数显示脚本。
- 反垃圾邮件帮助程序脚本。
- 集线器信息命令脚本。
- 维护模式通知脚本。
每篇新文章都应包括安装说明、配置值、测试步骤、卸载步骤和完整的脚本列表。