X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=blootbot%2Fsrc%2FIRC%2FIrcHooks.pl;h=d841df6a7c01eaecc0b525766737228cd9b6f58d;hb=0a9725e1526b9e16f51c2baa07e769e4bf9f3334;hp=9b25f6b19041b7da7edbefff61f5b21c2aa918c5;hpb=10c41367a0a0934f8f7c1fca6b40bbd9abddcf4e;p=infobot.git diff --git a/blootbot/src/IRC/IrcHooks.pl b/blootbot/src/IRC/IrcHooks.pl index 9b25f6b..d841df6 100644 --- a/blootbot/src/IRC/IrcHooks.pl +++ b/blootbot/src/IRC/IrcHooks.pl @@ -4,6 +4,7 @@ # Version: 20000126 # NOTE: Based on code by Kevin Lenzo & Patrick Cole (c) 1997 # +use vars qw(%chanconf); # GENERIC. TO COPY. sub on_generic { @@ -114,7 +115,7 @@ sub on_chat { if ($message =~ s/^\.//) { # dcc chat commands. ### TODO: make use of &Forker(); here? - &loadMyModule( $myModules{'ircdcc'} ); + &loadMyModule( $myModules{'UserDCC'} ); &DCCBroadcast("#$who# $message","m"); @@ -725,22 +726,18 @@ sub on_nick { sub on_nick_taken { $conn = shift(@_); my $nick = $conn->nick(); - my $newnick = $nick.int(rand 10); + #my $newnick = $nick . int(rand 10); + my $newnick = $nick . "_"; - if ($nick eq $ident) { - &DEBUG("on_nick_tane: nick eq ident... wtf?"); - return; - } - - &DEBUG("on_nick_taken: ident => $ident"); + &DEBUG("on_nick_taken: nick => $nick"); &status("nick taken ($nick); preparing nick change."); $conn->whois($nick); - $conn->schedule(5, sub { + #$conn->schedule(5, sub { &status("nick taken; changing to temporary nick ($nick -> $newnick)."); &nick($newnick); - } ); + #} ); } sub on_notice { @@ -981,9 +978,6 @@ sub on_quit { my $chans = join(' ', &getNickInChans($nick) ); &status(">>> $b_cyan$nick$ob has signed off IRC $b_red($ob$reason$b_red)$ob [$chans]"); - if ($nick =~ /^\Q$ident\E$/) { - &ERROR("^^^ THIS SHOULD NEVER HAPPEN (10)."); - } ### ### ok... lets clear out the cache @@ -999,10 +993,10 @@ sub on_quit { delete $chanstats{lc $nick}; ### - # FIXME: does this work? - my $mynick = $conn->nick(); - if ($nick !~ /^\Q$ident\E$/ and $nick =~ /^\Q$mynick\E$/i) { - &status("nickchange: own nickname became free; changing."); + # if we have a temp nick, and whoever is camping on our main nick leaves + # revert to main nick. Note that Net::IRC only knows our main nick + if ($nick eq $conn->nick()) { + &status("nickchange: own nick \"$nick\" became free; changing."); &nick($mynick); } } @@ -1241,8 +1235,8 @@ sub on_banned { my @args = $event->args; my $chan = $args[1]; - &status(">>> banned/$b_blue$chan$ob $b_cyan$args[0]$ob"); - #FIXME if $args[0] == me then kill autojoin! + &status(">>> banned/$b_blue$chan$ob $b_cyan$args[0]$ob, removing autojoin for $chan"); + delete $chanconf{$chan}{autojoin}; &joinNextChan(); } @@ -1250,8 +1244,10 @@ sub on_badchankey { $conn = shift(@_); my ($event) = @_; my @args = $event->args; + my $chan = $args[1]; - &DEBUG("on_badchankey: args => @args"); + &DEBUG("on_badchankey: args => @args, removing autojoin for $chan"); + delete $chanconf{$chan}{autojoin}; &joinNextChan(); } @@ -1264,4 +1260,11 @@ sub on_useronchan { &joinNextChan(); } +# TODO not used yet +sub on_stdin { + my $line = ; + chomp($line); + &FIXME("on_stdin: line => \"$line\""); +} + 1;