]> git.donarmstrong.com Git - infobot.git/blobdiff - src/IRC/IrcHooks.pl
fixed up ignore code. discovered by debian@OPN
[infobot.git] / src / IRC / IrcHooks.pl
index c76e1b514b78ec26f843e2ee02a833b838916856..ce436dff6369aa8af92ee24a714db86060e88b3a 100644 (file)
@@ -418,23 +418,24 @@ sub on_join {
     &status(">>> join/$b_blue$chan$ob $b_cyan$who$ob $b_yellow($ob$user\@$host$b_yellow)$ob$netsplitstr");
 
     $channels{$chan}{''}{$who}++;
-    $nuh{lc $who} = $who."!".$user."\@".$host unless (exists $nuh{lc $who});
+    $nuh         = $who."!".$user."\@".$host;
+    $nuh{lc $who} = $nuh unless (exists $nuh{lc $who});
 
-    ### on-join ban. (TODO: kick)
-    if (exists $bans{$chan}) {
-       ### TODO: need to do $chan and _default
-       foreach (keys %{ $bans{$chan} }) {
-           s/\*/\\S*/g;
-           next unless /^\Q$nuh\E$/i;
-
-           foreach (keys %{ $channels{$chan}{'b'} }) {
-               &DEBUG(" bans_on_chan($chan) => $_");
-           }
+    ### on-join bans.
+    my @bans   = keys %{ $bans{$chan} };
+    push(@bans, keys %{ $bans{"*"} });
+    foreach (@bans) {
+       s/\*/\\S*/g;
+       next unless /^\Q$nuh\E$/i;
 
-           ### TODO: check $channels{$chan}{'b'} if ban already exists.
-           &ban( "*!*@".&makeHostMask($host), $chan);
-           last;
+       ### TODO: check $channels{$chan}{'b'} if ban already exists.
+       foreach (keys %{ $channels{$chan}{'b'} }) {
+           &DEBUG(" bans_on_chan($chan) => $_");
        }
+
+       ### TODO: kick
+       &ban( "*!*@".&makeHostMask($host), $chan);
+       last;
     }
 
     ### ROOTWARN:
@@ -760,8 +761,9 @@ sub on_targettoofast {
     my $nick = $event->nick();
     my($me,$chan,$why) = $event->args();
 
+    ### TODO: incomplete.
 ###    .* wait (\d+) second/) {
-       &status("X1 $msg");
+       &status("on_ttf: X1 $msg") if (defined $msg);
        my $sleep = 5;
        &status("going to sleep for $sleep...");
        sleep $sleep;
@@ -1093,14 +1095,13 @@ sub hookMsg {
     return if ($skipmessage);
     return unless (&IsParam("minVolunteerLength") or $addressed);
 
-    local $ignore      = 0;
-
     foreach (@ignore) {
        s/\*/\\S*/g;
 
-       next unless ($nuh =~ /^\Q$_\E$/i);
-       $ignore++;
-       last;
+       next unless (eval { $nuh =~ /^$_$/i });
+
+       &status("IGNORE <$who> $message");
+       return;
     }
 
     if (defined $nuh) {