LUA - 如何在无需导出表的情况下从其他模块调用函数

我正在尝试使用 Jitsi 设置特殊的行为,但我对 LUA 的了解不多。

Jitsi/Prosody 模块 "mod_muc_lobby_rooms.lua" 实现了一些函数,比如 handle_create_lobby(event);handle_create_lobby 会调用内部的其他子函数。

https://github.com/jitsi/jitsi-meet/blob/master/resources/prosody-plugins/mod_muc_lobby_rooms.lua

但该模块本身不是库模块,因此没有表被导出,而另一个代码也无法使用 "require"。 这是我对 LUA 的理解。

对于自己的模块,我只想在其他地方使用这些函数,而无需重新实现或复制/粘贴。

是否有任何解决方案,可以将函数“引用”到我的模块中?

如果可能的话,我希望让 "mod_muc_lobby_room.lua" 保持不变,即使 Jitsi 进行一些更新也是如此。

提前感谢。

Lua 初学者,Uwe

点赞
用户7646100
用户7646100

你可以这样做:

file=io.open("mod_muc_lobby_room.lua")
io.input(file)
load(io.read("*a"))()
io.close(file)

并且在 mod_muc_lobby_room.lua 文件中的代码将被执行。

2021-04-05 14:38:31
用户3466237
用户3466237

你可以发出一个事件是因为它监听它

prosody.events.fire_event("create-lobby-room", event)

或者你可以像这样使用模块函数:

local muc_lobby_rooms = module:depends("muc_lobby_rooms");
muc_lobby_rooms.handle_create_lobby(event);
2021-04-06 10:07:22