Reconnect with a different nickname if the original is already in use

This commit is contained in:
Diego Martínez 2013-01-19 04:59:38 -02:00
parent 96ed8287f4
commit 33a16ac395
3 changed files with 27 additions and 4 deletions

View File

@ -4,6 +4,7 @@ TODO List
- Check for availability of nickname on join, and select a different one - Check for availability of nickname on join, and select a different one
until one is available. until one is available.
- Implement more callbacks for `mt_irc.register_callback'.
Not TODO List Not TODO List
------------- -------------

View File

@ -1,2 +1,7 @@
#! /bin/sh #! /bin/sh
(cd Build && cmake . && make && make pack_mod && rm -fr ~/.minetest/games/testing/mods/irc && cp -fr irc ~/.minetest/games/testing/mods/ ) cd Build \
&& cmake .. \
&& make \
&& make pack_mod \
&& rm -fr ~/.minetest/games/testing/mods/irc \
&& cp -fr irc ~/.minetest/games/testing/mods/

View File

@ -183,12 +183,29 @@ minetest.register_on_shutdown(function ( )
end end
end); end);
irc.handlers.on_error = function (from, respond_to) irc.handlers.on_error = function (...) --( from, respond_to )
for k, v in pairs(mt_irc.connected_players) do for k, v in pairs(mt_irc.connected_players) do
if (v) then minetest.chat_send_player(k, text); end if (v) then minetest.chat_send_player(k, "IRC: Bot had a network error. Reconnecting in 5 seconds..."); end
end
for _, v in ipairs({...}) do
minetest.chat_send_all(dump(v));
end
irc.quit("Network error");
for n = 1, 5 do
irc.poll();
end end
mt_irc.got_motd = false; mt_irc.got_motd = false;
mt_irc.connect_ok = false; mt_irc.connect_ok = false;
irc.quit("Ping timeout");
minetest.after(5, mt_irc.connect); minetest.after(5, mt_irc.connect);
end end
irc.handlers.on_err_nicknameinuse = function ( from, respond_to )
irc.quit("Nick in use");
for n = 1, 5 do
irc.poll();
end
mt_irc.got_motd = false;
mt_irc.connect_ok = false;
mt_irc.server_nick = mt_irc.server_nick:sub(1, -2)..math.floor(math.random(10));
mt_irc.connect();
end