diff options
Diffstat (limited to 'Swiftob/LuaCommands.cpp')
-rw-r--r-- | Swiftob/LuaCommands.cpp | 10 |
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); |