X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2FIRC%2FIrcHooks.pl;h=125ba7cb45754fed35edf1950ec68cf463f913ff;hb=130fc9d79663d571b32c8a625e3487e7b42c10da;hp=2d03d0cb534829a3bc4dbf54d17fc162c70e2759;hpb=66ce4d619091f642e37908c3b0ff56f1dda5ef5a;p=infobot.git diff --git a/src/IRC/IrcHooks.pl b/src/IRC/IrcHooks.pl index 2d03d0c..125ba7c 100644 --- a/src/IRC/IrcHooks.pl +++ b/src/IRC/IrcHooks.pl @@ -185,10 +185,13 @@ sub on_endofmotd { &status("End of motd. Now lets join some channels..."); if (!scalar @joinchan) { - &WARN("joinchan array is empty!!!"); + &WARN("joinchan array is empty!"); @joinchan = &getJoinChans(1); } + # ok, we're free to do whatever we want now. go for it! + $running = 1; + # unfortunately, Net::IRC does not implement this :( # invalid command... what is it? # &rawout("NOTIFY $ident"); @@ -360,13 +363,22 @@ sub on_disconnect { # clear any variables on reconnection. $nickserv = 0; + &DEBUG("on_disconnect: 1"); &clearIRCVars(); + &DEBUG("on_disconnect: 2"); + + if (!defined $self) { + &WARN("on_disconnect: self is undefined! WTF"); + &DEBUG("running function irc... lets hope this works."); + &irc(); + return; + } + if (!$self->connect()) { + &DEBUG("on_disconnect: 3"); &WARN("not connected? help me. gonna call ircCheck() in 60s"); &clearIRCVars(); &ScheduleThis(1, "ircCheck"); -# &ScheduleThis(10, "ircCheck"); -# &ScheduleThis(30, "ircCheck"); } } @@ -427,9 +439,10 @@ sub on_invite { ### TODO: join key. if (exists $chanconf{$chan}) { + # it's still buggy :/ if (&validChan($chan)) { &msg($who, "i'm already in \002$chan\002."); - next; +# return; } &status("invited to $b_blue$chan$ob by $b_cyan$nick$ob"); @@ -528,6 +541,7 @@ sub on_join { if (defined( my $whojoin = $cache{join}{$chan} )) { &msg($chan, "Okay, I'm here. (courtesy of $whojoin)"); delete $cache{join}{$chan}; + &joinNextChan(); # hack. } ### TODO: move this to &joinchan()? @@ -892,7 +906,7 @@ sub on_quit { ### $chan = $reason; # no. my $count = 0; - foreach (keys %channels) { + foreach (grep !/^_default$/, keys %channels) { # fixes inconsistent chanstats bug #1. if (!&IsNickInChan($nick,$_)) { $count++; @@ -1044,7 +1058,7 @@ sub on_crversion { } if (grep /^\Q$nick\E$/i, @vernick) { - &WARN("nick $nick found in vernick; skipping."); + &WARN("nick $nick found in vernick ($ver); skipping."); return; } push(@vernick, $nick); @@ -1058,18 +1072,25 @@ sub on_crversion { } elsif ($ver =~ /irssi/i) { $ver{irssi}{$nick} = $ver; - } elsif ($ver =~ /epic/i) { + } elsif ($ver =~ /epic|(Third Eye)/i) { $ver{epic}{$nick} = $ver; + } elsif ($ver =~ /ircII|PhoEniX/i) { + $ver{ircII}{$nick} = $ver; + } elsif ($ver =~ /mirc/i) { - &DEBUG("verstats: mirc: $nick => '$ver'."); +# &DEBUG("verstats: mirc: $nick => '$ver'."); $ver{mirc}{$nick} = $ver; +# ok... then we get to the lesser known/used clients. } elsif ($ver =~ /ircle/i) { $ver{ircle}{$nick} = $ver; - } elsif ($ver =~ /ircII/i) { - $ver{ircII}{$nick} = $ver; + } elsif ($ver =~ /chatzilla/i) { + $ver{chatzilla}{$nick} = $ver; + + } elsif ($ver =~ /pirch/i) { + $ver{pirch}{$nick} = $ver; } elsif ($ver =~ /sirc /i) { $ver{sirc}{$nick} = $ver; @@ -1148,7 +1169,8 @@ sub on_chanfull { my ($self, $event) = @_; my @args = $event->args; - &DEBUG("on_chanfull: args => @args"); + &status(">>> chanfull/$b_blue$args[1]$ob"); + &joinNextChan(); } @@ -1156,15 +1178,18 @@ sub on_inviteonly { my ($self, $event) = @_; my @args = $event->args; - &DEBUG("on_inviteonly: args => @args"); + &status(">>> inviteonly/$b_cyan$args[1]$ob"); + &joinNextChan(); } sub on_banned { my ($self, $event) = @_; my @args = $event->args; + my $chan = $args[1]; + + &status(">>> banned/$b_blue$chan$ob $b_cyan$args[0]$ob"); - &DEBUG("on_banned: args => @args"); &joinNextChan(); } @@ -1176,4 +1201,12 @@ sub on_badchankey { &joinNextChan(); } +sub on_useronchan { + my ($self, $event) = @_; + my @args = $event->args; + + &DEBUG("on_useronchan: args => @args"); + &joinNextChan(); +} + 1;