]> git.donarmstrong.com Git - infobot.git/blobdiff - src/IRC/IrcHelpers.pl
hookMode: change chan to nick. if deopped by chanserv, check it
[infobot.git] / src / IRC / IrcHelpers.pl
index 9d654f90e9c63d36274f186e0436354fe06451c8..9e4c1cd37a28def394baa4611401be6c9a3580e9 100644 (file)
@@ -13,12 +13,14 @@ if (&IsParam("useStrict")) { use strict; }
 #######################################################################
 
 #####
-# Usage: &hookMode($chan, $modes, @targets);
+# Usage: &hookMode($nick, $modes, @targets);
 sub hookMode {
-    my ($chan, $modes, @targets) = @_;
+    my ($nick, $modes, @targets) = @_;
     my $parity = 0;
 
-    $chan = lc $chan;          # !!!.
+    if ($chan =~ tr/A-Z/a-z/) {
+       &VERB("hookMode: cased $chan.",2);
+    }
 
     my $mode;
     foreach $mode (split(//, $modes)) {
@@ -43,6 +45,11 @@ sub hookMode {
 
            # modes w/ target affecting nick => cache it.
            if ($mode =~ /[bov]/) {
+               if ($mode eq "o" and $nick eq "ChanServ" and $target =~ /^\Q$ident$\E/i) {
+                   &DEBUG("hookmode: chanserv deopped us! asking");
+                   &chanServCheck($chan);
+               }
+
                $channels{$chan}{$mode}{$target}++      if  $parity;
                delete $channels{$chan}{$mode}{$target} if !$parity;
            }
@@ -254,6 +261,11 @@ sub chanLimitVerify {
     my($chan)  = @_;
     my $l      = $channels{$chan}{'l'};
 
+    if (scalar keys %netsplitservers) {
+       &WARN("clV: netsplit active (1); skipping. (netsplit => $netsplit)");
+       return;
+    }
+
     # only change it if it's not set.
     if (defined $l and &IsChanConf("chanlimitcheck")) {
        my $plus  = &getChanConfDefault("chanlimitcheckPlus", 5, $chan);