From 12b36c51ad7e7255cf7b98427ff5d301ef0b8f58 Mon Sep 17 00:00:00 2001 From: mcmlxxix <> Date: Wed, 27 Oct 2010 18:20:56 +0000 Subject: [PATCH] fixed KICK server_command. Bot will now auto-rejoin channels from which it has been kicked. --- exec/load/ircbot_commands.js | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/exec/load/ircbot_commands.js b/exec/load/ircbot_commands.js index c6a6dae2b9..c28899c2f6 100644 --- a/exec/load/ircbot_commands.js +++ b/exec/load/ircbot_commands.js @@ -303,6 +303,10 @@ Bot_Commands["MODE"].command = function (target,onick,ouh,srv,lvl,cmd) { } else { while(cmd[0] && cmd[0][0] == "#" || cmd[0][0] == "&") { var chan_str=cmd.shift(); + if(!srv.channel[chan_str.toUpperCase()]) { + srv.o(target,"I am not in channel: " + chan_str.toLowerCase(),"NOTICE"); + return; + } channels.push(chan_str.toUpperCase()); } } @@ -567,7 +571,30 @@ Server_Commands["PART"] = function (srv,cmd,onick,ouh) { if(chan_count==0) delete srv.users[onick.toUpperCase()]; } } -Server_Commands["QUIT"]=Server_Commands["KICK"]=Server_Commands["PART"]; +Server_Commands["QUIT"]=Server_Commands["PART"]; + +Server_Commands["KICK"] = function (srv,cmd,onick,ouh) { + if (cmd[0][0] == ":") + cmd[0] = cmd[0].slice(1); + + var chan_name=cmd.shift(); + var kicked=cmd.shift(); + var chan = srv.channel[chan_name.toUpperCase()]; + + if ((kicked == srv.curnick) && chan && chan.is_joined) { + chan.is_joined = false; + return; + } + // Someone else parting. + if(srv.users[kicked.toUpperCase()]) { + delete srv.users[kicked.toUpperCase()].channels[chan_name.toUpperCase()]; + var chan_count=0; + for(var c in srv.users[kicked.toUpperCase()].channels) { + chan_count++; + } + if(chan_count==0) delete srv.users[kicked.toUpperCase()]; + } +} Server_Commands["PRIVMSG"] = function (srv,cmd,onick,ouh) { if(srv.users[onick.toUpperCase()]) srv.users[onick.toUpperCase()].last_spoke=time(); -- GitLab