]> git.donarmstrong.com Git - infobot.git/blobdiff - src/IRC/IrcHooks.pl
root[wW]arn -> RootWarn
[infobot.git] / src / IRC / IrcHooks.pl
index 35472c6992fe4557fa9a493b9586fab8caf5c17b..3ed802c0f63f906d2f3636ef4e77b93686e1ced7 100644 (file)
@@ -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");
 
@@ -182,7 +183,7 @@ sub on_endofmotd {
     }
 
     if ($firsttime) {
-       &ScheduleThis(1, \&setupSchedulers);
+       &ScheduleThis(1, "setupSchedulers");
        $firsttime = 0;
     }
 
@@ -209,7 +210,7 @@ sub on_endofmotd {
     }
 
     &status("End of motd. Now lets join some channels...");
-    &joinNextChan();
+    #&joinNextChan();
 }
 
 sub on_endofwho {
@@ -365,8 +366,9 @@ sub on_disconnect {
     my ($event) = @_;
     my $from = $event->from();
     my $what = ($event->args)[0];
+    my $mynick=$conn->nick();
 
-    &status("disconnect from $from ($what).");
+    &status("$mynick disconnect from $from ($what).");
     $ircstats{'DisconnectTime'}                = time();
     $ircstats{'DisconnectReason'}      = $what;
     $ircstats{'DisconnectCount'}++;
@@ -385,12 +387,9 @@ sub on_disconnect {
        return;
     }
 
-    if (!$conn->connect()) {
-       &DEBUG("on_disconnect: 3");
-       &WARN("not connected? help me. gonna call ircCheck() in 60s");
-       &clearIRCVars();
-       &ScheduleThis(1, "ircCheck");
-    }
+    &WARN("scheduling call ircCheck() in 60s");
+    &clearIRCVars();
+    &ScheduleThis(1, "ircCheck");
 }
 
 sub on_endofnames {
@@ -573,7 +572,7 @@ sub on_join {
 
     ### ROOTWARN:
     &rootWarn($who,$user,$host,$chan) if (
-               &IsChanConf("rootWarn") &&
+               &IsChanConf('RootWarn') &&
                $user =~ /^~?r(oo|ew|00)t$/i
     );
 
@@ -727,22 +726,18 @@ sub on_nick {
 sub on_nick_taken {
     $conn = shift(@_);
     my $nick   = $conn->nick();
-    my $newnick = $nick.int(rand 10);
-
-    if ($nick eq $ident) {
-       &DEBUG("on_nick_tane: nick eq ident... wtf?");
-       return;
-    }
+    #my $newnick = $nick . int(rand 10);
+    my $newnick = $nick . "_";
 
-    &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 {
@@ -812,13 +807,14 @@ sub on_part {
     $conn = shift(@_);
     my ($event) = @_;
     $chan      = lc( ($event->to)[0] );        # CASING!!!
+    my $mynick = $conn->nick();
     my $nick   = $event->nick;
     my $userhost = $event->userhost;
     $who       = $nick;
     $msgType   = "public";
 
-    if (0 and !exists $channels{$chan}) {
-       &DEBUG("on_part: found out we're on $chan!");
+    if (!exists $channels{$chan}) {
+       &DEBUG("on_part: found out $mynick is on $chan!");
        $channels{$chan} = 1;
     }
 
@@ -982,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
@@ -1000,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);
     }
 }
@@ -1242,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();
 }
 
@@ -1251,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();
 }
 
@@ -1265,4 +1260,11 @@ sub on_useronchan {
     &joinNextChan();
 }
 
+# TODO not used yet
+sub on_stdin {
+    my $line = <STDIN>;
+    chomp($line);
+    &FIXME("on_stdin: line => \"$line\"");
+}
+
 1;