]> git.donarmstrong.com Git - infobot.git/blobdiff - src/UserExtra.pl
chaninfo #botpark - fix sort to get whosaid the most
[infobot.git] / src / UserExtra.pl
index ada60ce8113155e9c07a0e378c67793df0f403a1..6ae80deeac76f34b90087aac504217a2ba209062 100644 (file)
@@ -17,6 +17,7 @@ use vars qw(%channels %chanstats %cmdstats %count %ircstats %param
 
 &addCmdHook("main", 'chan(stats|info)', ('CODEREF' => 'chaninfo', ) );
 &addCmdHook("main", 'cmd(stats|info)', ('CODEREF' => 'cmdstats', ) );
+&addCmdHook("main", 'sched(stats|info)', ('CODEREF' => 'scheduleList', ) );
 &addCmdHook("main", 'factinfo', ('CODEREF' => 'factinfo',
        'Cmdstats' => 'Factoid Info', Module => 'factoids', ) );
 &addCmdHook("main", 'factstats?', ('CODEREF' => 'factstats',
@@ -60,7 +61,7 @@ sub chaninfo {
        foreach (sort keys %channels) {
            if ( /^\s*$/ or / / ) {
                &status("chanstats: fe channels: chan == NULL.");
-               &ircCheck();
+               #&ircCheck();
                next;
            }
            next if (/^_default$/);
@@ -69,6 +70,7 @@ sub chaninfo {
            push(@array, $str);
        }
        &pSReply($reply.": ".join(', ', @array));
+       &ircCheck();
 
        ### total user count.
        foreach $chan (keys %channels) {
@@ -164,8 +166,8 @@ sub chaninfo {
        $new{$_} = $userstats{$_}{'Count'};
     }
 
-    # todo: show top 3 with percentages?
-    my($count) = (sort { $new{$a} <=> $new{$b} } keys %new)[0];
+    # TODO: show top 3 with percentages?
+    my($count) = (sort { $new{$b} <=> $new{$a} } keys %new)[0];
     if ($count) {
        $reply .= ".  \002$count\002 has said the most with a total of \002$new{$count}\002 messages";
     }
@@ -486,7 +488,7 @@ sub do_countrystats {
        push(@list, "$str ($_, $perc %)");
     }
 
-    # todo: move this into a scheduler like nickometer
+    # TODO: move this into a scheduler like nickometer
     $msgType   = "private";
     &pSReply( &formListReply(0, "Country Stats ", @list) );
 
@@ -535,7 +537,7 @@ sub userCommands {
            }
        }
 
-       &performReply( sprintf("'%s' is ascii %s", $arg, ord $1) );
+       &performReply( sprintf("'%s' is ascii %s", $arg, ord $arg) );
        return;
     }
 
@@ -795,6 +797,7 @@ sub userCommands {
     if ($message =~ /^statu?s$/i) {
        my $startString = scalar(gmtime $^T);
        my $upString    = &Time2String(time() - $^T);
+       my ($puser,$psystem,$cuser,$csystem) = times;
        my $factoids    = &countKeys("factoids");
        my $forks = 0;
        foreach (keys %forked) {
@@ -823,7 +826,7 @@ sub userCommands {
          "I'm using about \002$memusage\002 ".
          "kB of memory. With \002$forks\002 active ".
                &fixPlural("fork",$forks).
-         "."
+         ". Process time user/system $puser/$psystem child $cuser/$csystem"
        );
 
        return;
@@ -847,38 +850,36 @@ if (0) {
     }
 
     # wantNick. xk++
-    if ($message =~ /^wantNick(\+)?$/i) {
-       my ($force) = ($1) ? 1 : 0;
-       $force = 0 unless (&IsFlag("n"));
+    # 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();
 
-       # cannot trust Net::IRC's nick()
-       if ($param{'ircNick'} eq $ident) {
-           &msg($who, "I hope you're right. I'll try anyway.");
-           &DEBUG("ircNick => $param{'ircNick'}");
-           &DEBUG("ident => $ident");
+       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( $param{'ircNick'} ) ) {
-           my $str = "attempting to change nick to $param{'ircNick'}";
+       if (! &IsNickInAnyChan( $wantnick ) ) {
+           my $str = "attempting to change nick from $mynick to $wantnick";
            &status($str);
            &msg($who, $str);
-           &nick($param{ 'ircNick' });
+           &nick($wantnick);
            return;
        }
 
        # idea from dondelecarlo :)
-       # todo: use cache{nickserv}
+       # 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'}");
+           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 after GHOST.");
-               &nick( $param{'ircNick'} );
+               &status("going to change nick from $mynick to $wantnick after GHOST.");
+               &nick($wantnick);
            } );
 
            return;