summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiftob/LuaCommands.cpp')
-rw-r--r--Swiftob/LuaCommands.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/Swiftob/LuaCommands.cpp b/Swiftob/LuaCommands.cpp
index d2f0f07..5639bd9 100644
--- a/Swiftob/LuaCommands.cpp
+++ b/Swiftob/LuaCommands.cpp
@@ -53,12 +53,16 @@ static int l_register_listener(lua_State *L) {
commands = static_cast<LuaCommands*>(lua_touserdata(L, -1));
lua_pop(L, 1);
if (!lua_isfunction(L, 1)) {
- return luaL_error(L, "register_listener parameter must be a callback function");
+ return luaL_error(L, "register_listener parameter1 must be a callback function");
}
+ if (!lua_isboolean(L, 2)) {
+ return luaL_error(L, "register_listener parameter2 must be a boolean");
+ }
+ bool ownMessages = lua_toboolean(L, 2);
lua_pushvalue(L, 1);
int callbackIndex = luaL_ref(L, LUA_REGISTRYINDEX);
lua_pop(L, 1);
- commands->getCommands()->registerListener(boost::bind(&LuaCommands::handleLuaListener, commands, callbackIndex, L, _1));
+ commands->getCommands()->registerListener(Commands::ListenerCallback(boost::bind(&LuaCommands::handleLuaListener, commands, callbackIndex, L, _1), ownMessages));
return 0;
}
@@ -428,7 +432,7 @@ void LuaCommands::loadScript(boost::filesystem::path filePath) {
lua_pushlightuserdata(lua, storage);
lua_setfield(lua, LUA_REGISTRYINDEX, STORAGE);
lua_register(lua, "swiftob_register_command", &l_register_command);
- lua_register(lua, "swiftob_register_listener", &l_register_listener);
+ lua_register(lua, "swiftob_register_listener", &l_register_listener); /*p1 function callback, p2 bool - call for own messages*/
lua_register(lua, "swiftob_reply_to", &l_reply_to);
lua_register(lua, "swiftob_get_software_version", &l_get_software_version);
lua_register(lua, "swiftob_muc_input_to_jid", &l_muc_input_to_jid);