]> git.donarmstrong.com Git - infobot.git/blobdiff - src/IRC/Schedulers.pl
- endofnames: chanserv ops should work now.
[infobot.git] / src / IRC / Schedulers.pl
index 698d08ad40c8d966129e5fd2c14334c39ad86cab..cbe2a0cb371b5be58571765c95230de21897ff57 100644 (file)
@@ -25,7 +25,7 @@ sub setupSchedulers {
     &netsplitCheck(1); # mandatory
     &floodLoop(1);     # mandatory
     &seenFlush(1);
-    &leakCheck(1);     # mandatory
+    &leakCheck(2);     # mandatory
     &ignoreCheck(1);   # mandatory
     &seenFlushOld(1);
     &ircCheck(1);      # mandatory
@@ -461,7 +461,7 @@ sub leakCheck {
     my $count = 0;
 
     if (@_) {
-       &ScheduleThis(60, "leakCheck");
+       &ScheduleThis(240, "leakCheck");
        return if ($_[0] eq "2");
     } else {
        delete $sched{"leakCheck"}{RUNNING};
@@ -489,6 +489,8 @@ sub leakCheck {
     my $delete = 0;
     foreach (keys %nuh) {
        next if (&IsNickInAnyChan($_));
+       next if (exists $dcc{CHAT}{$_});
+
        delete $nuh{$_};
        $delete++;
     }
@@ -527,7 +529,7 @@ sub ignoreCheck {
 sub ircCheck {
 
     if (@_) {
-       &ScheduleThis(240, "ircCheck");
+       &ScheduleThis(120, "ircCheck");
        return if ($_[0] eq "2");       # defer.
     } else {
        delete $sched{"ircCheck"}{RUNNING};
@@ -868,9 +870,15 @@ sub factoidCheck {
     my @list = &searchTable("factoids", "factoid_key", "factoid_key", " #DEL#");
     my $stale = &getChanConfDefault("factoidDeleteDelay", 7)*60*60*24;
 
+    my $time   = time();
     foreach (@list) {
        my $age = &getFactInfo($_, "modified_time");    
-       next unless (time() - $age > $stale);
+       if (!defined $age or $age !~ /^\d+$/) {
+           &WARN("age == NULL or not numeric.");
+           next;
+       }
+
+       next unless ($time - $age > $stale);
 
        my $fix = $_;
        $fix =~ s/ #DEL#$//g;
@@ -892,11 +900,18 @@ sub dccStatus {
 
     my $time = strftime("%H:%M", localtime(time()) );
 
+    my $c;
     foreach (keys %channels) {
-       my $users       = keys %{ $channels{$_}{''} };
-       my $chops       = keys %{ $channels{$_}{o}  };
-       my $bans        = keys %{ $channels{$_}{b}  };
-       &DCCBroadcast("[$time] $_: $users members ($chops chops), $bans bans","+o");
+       my $c           = $_;
+       my $users       = keys %{ $channels{$c}{''} };
+       my $chops       = keys %{ $channels{$c}{o}  };
+       my $bans        = keys %{ $channels{$c}{b}  };
+
+       my $txt = "[$time] $c: $users members ($chops chops), $bans bans";
+       foreach (keys %{ $dcc{'CHAT'} }) {
+           next unless (exists $channels{$c}{''}{lc $_});
+           $conn->privmsg($dcc{'CHAT'}{$_}, $txt);
+       }
     }
 }