]> git.donarmstrong.com Git - infobot.git/commitdiff
nick changing fixes
authortimriker <timriker@c11ca15a-4712-0410-83d8-924469b57eb5>
Thu, 8 Jul 2004 18:20:38 +0000 (18:20 +0000)
committertimriker <timriker@c11ca15a-4712-0410-83d8-924469b57eb5>
Thu, 8 Jul 2004 18:20:38 +0000 (18:20 +0000)
git-svn-id: https://svn.code.sf.net/p/infobot/code/trunk/blootbot@991 c11ca15a-4712-0410-83d8-924469b57eb5

src/IRC/Irc.pl
src/IRC/IrcHooks.pl
src/UserExtra.pl

index ddc7fde35e8260cb6ee2cd0355245c725965d803..1ffda4ff05f96db147e751c691bc50d6d7a32b25 100644 (file)
@@ -601,46 +601,36 @@ sub quit {
 }
 
 sub nick {
-    my ($nick) = @_;
+    my ($newnick) = @_;
+    my $mynick = $conn->nick();
 
-    if (!defined $nick) {
+    if (!defined $newnick) {
        &ERROR("nick: nick == NULL.");
        return;
     }
 
-    if (defined $ident and $nick eq $ident) {
-       &WARN("nick: nick == ident == '$ident'.");
+    if (!defined $mynick) {
+       &WARN("nick: mynick == NULL.");
        return;
     }
 
-    my $bad     = 0;
-    $bad++ if (exists $nuh{$conn->nick()});
-    $bad++ if (&IsNickInAnyChan($conn->nick()));
+    my $bad = 0;
+    $bad++ if (exists $nuh{$newnick});
+    $bad++ if (&IsNickInAnyChan($newnick));
 
     if ($bad) {
-       &WARN("Nick: not going to try and get my nick back. [".
-               scalar(gmtime). "]");
-# hrm... over time we lose track of our own nick.
-#      return;
+       &WARN("Nick: not going to try to change from $mynick to $newnick. [". scalar(gmtime). "]");
+       # hrm... over time we lose track of our own nick.
+       #return;
     }
 
-# FIXME broken for multiple nicks
-#    if ($nick =~ /^$mask{nick}$/) {
-#      &rawout("NICK ".$nick);
-#
-#      if (defined $ident) {
-#          &status("nick: Changing nick to $nick (from $ident)");
-#          # following shouldn't be here :(
-#          $ident      = $nick;
-#      } else {
-#          &DEBUG("first time nick change.");
-#          $ident      = $nick;
-#      }
-#
-#      return 1;
-#    }
-    &DEBUG("nick: failed... why oh why (nick => $nick)");
-
+    if ($newnick =~ /^$mask{nick}$/) {
+       &status("nick: Changing nick from $mynick to $newnick");
+       # ->nick() will NOT change cause we are using rawout?
+       &rawout("NICK $newnick");
+       return 1;
+    }
+    &DEBUG("nick: failed... why oh why (mynick=$mynick, newnick=$newnick)");
     return 0;
 }
 
index 9b25f6b19041b7da7edbefff61f5b21c2aa918c5..a62e0ea3b42504b3abb0af97b3712cbc07891cb7 100644 (file)
@@ -725,14 +725,10 @@ 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.");
 
@@ -999,12 +995,12 @@ 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.");
-       &nick($mynick);
-    }
+    # FIXME: broken for multiple connects
+    #my $mynick = $conn->nick();
+    #if ($nick !~ /^\Q$ident\E$/ and $nick =~ /^\Q$mynick\E$/i) {
+       #&status("nickchange: own nickname became free; changing.");
+       #&nick($mynick);
+    #}
 }
 
 sub on_targettoofast {
index f6380987e858842fc93ddf8fafb2cfef3cc4d4fe..ba80639d74a073b95a42a8e516f93814db764447 100644 (file)
@@ -850,45 +850,43 @@ if (0) {
     }
 
     # wantNick. xk++
-#    if ($message =~ /^wantNick(\+)?$/i) {
-#      my ($force) = ($1) ? 1 : 0;
-#      $force = 0 unless (&IsFlag("n"));
-#
-#      # cannot trust Net::IRC's nick() (TimRiker asks why?)
-#      if ($param{'ircNick'} eq $ident) {
-#          &msg($who, "I hope you're right. I'll try anyway.");
-#          &DEBUG("ircNick => $param{'ircNick'}");
-#          &DEBUG("ident => $ident");
-#      }
-#
-#      # fallback check, I guess.  needed?
-#      if (! &IsNickInAnyChan( $param{'ircNick'} ) ) {
-#          my $str = "attempting to change nick to $param{'ircNick'}";
-#          &status($str);
-#          &msg($who, $str);
-#          &nick($param{ 'ircNick' });
-#          return;
-#      }
-#
-#      # idea from dondelecarlo :)
-#      # TODO: use cache{nickserv}
-#      if ($param{'nickServ_pass'}) {
-#          return if ($param{'ircNick'} eq $ident or $force == 0);
-#
-#          &status("someone is using our nick; GHOSTing");
-#          &msg($who, "using GHOST on $param{'ircNick'}.");
-#          &msg("NickServ", "GHOST $param{'ircNick'} $param{'nickServ_pass'}");
-#
-#          $conn->schedule(5, sub {
-#              &status("going to change nick after GHOST.");
-#              &nick( $param{'ircNick'} );
-#          } );
-#
-#          return;
-#      }
-#
-#      return;
-#   }
+    # FIXME does not try to get nick "back", just switches nicks
+    if ($message =~ /^wantNick\s(.*)?$/i) {
+       return unless (&hasFlag("o"));
+       my $wantnick = lc $1;
+       my $mynick = $conn->nick();
+
+       if ($mynick eq $wantnick) {
+           &msg($who, "I hope you're right. I'll try anyway (mynick=$mynick, wantnick=$wantnick).");
+       }
+
+       # fallback check, I guess.  needed?
+       if (! &IsNickInAnyChan( $wantnick ) ) {
+           my $str = "attempting to change nick from $mynick to $wantnick";
+           &status($str);
+           &msg($who, $str);
+           &nick($wantnick);
+           return;
+       }
+
+       # idea from dondelecarlo :)
+       # TODO: use cache{nickserv}
+       if ($param{'nickServ_pass'}) {
+           my $str = "someone is using nick $wantnick; GHOSTing";
+           &status($str);
+           &msg($who, $str);
+           &msg("NickServ", "GHOST $wantnick $param{'nickServ_pass'}");
+
+           $conn->schedule(5, sub {
+               &status("going to change nick from $mynick to $wantnick after GHOST.");
+               &nick($wantnick);
+           } );
+
+           return;
+       }
+
+       return;
+    }
 
     return "CONTINUE";
 }