]> git.donarmstrong.com Git - infobot.git/commitdiff
added 'verstats'
authordms <dms@c11ca15a-4712-0410-83d8-924469b57eb5>
Mon, 29 Jan 2001 15:04:09 +0000 (15:04 +0000)
committerdms <dms@c11ca15a-4712-0410-83d8-924469b57eb5>
Mon, 29 Jan 2001 15:04:09 +0000 (15:04 +0000)
git-svn-id: https://svn.code.sf.net/p/infobot/code/trunk/blootbot@267 c11ca15a-4712-0410-83d8-924469b57eb5

src/CommandStubs.pl

index 96ccce3b2eabe02c37126b714d6da9e95d00c28b..225749af7a44fc8306d2f64f118e84123cb659b3 100644 (file)
@@ -189,11 +189,12 @@ sub parseCmdHook {
 &addCmdHook("extra", 'uptime', ('CODEREF' => 'uptime', 'Identifier' => 'uptime',
        'Cmdstats' => 'Uptime') );
 &addCmdHook("extra", 'nullski', ('CODEREF' => 'nullski', ) );
-&addCmdHook("extra", 'crash', ('CODEREF' => 'crash' ) );
 sub nullski { my ($arg) = @_; foreach (`$arg`) { &msg($who,$_); } }
 &addCmdHook("extra", '(fm|freshmeat)', ('CODEREF' => 'Freshmeat::Freshmeat',
        'Identifier' => 'freshmeat', 'Cmdstats' => 'Freshmeat',
        'Forker' => 1, 'Help' => 'freshmeat') );
+&addCmdHook("extra", 'verstats', ('CODEREF' => 'do_verstats' ) );
+
 ###
 ### END OF ADDING HOOKS.
 ###
@@ -650,4 +651,54 @@ sub DebianNew {
     &::performStrictReply( &::formListReply(0, "New debian packages:", @new) );
 }
 
+sub do_verstats {
+    my ($chan) = @_;
+
+    if (!defined $chan) {
+       &help("verstats");
+       return;
+    }
+
+    if (!&validChan($chan)) {
+       &pSReply("chan $chan is invalid.");
+       return;
+    }
+
+    if (scalar keys %ver) {
+       &DEBUG("keys ver exists... stopping.");
+       return;
+    }
+
+    &msg($who, "Sending CTCP VERSION...");
+    $conn->ctcp("VERSION", $chan);
+    $conn->schedule(60, sub {
+       my $total = 0;
+
+       foreach (keys %ver) {
+           $total += scalar keys %{ $ver{$_} };
+       }
+
+       my %sorted;
+       foreach (keys %ver) {
+           my $count = scalar keys %{ $ver{$_} };
+           my $perc  = sprintf("%.01f", $count * 100 / $total);
+           $perc =~ s/.0$//;   # lame compression.
+
+           $sorted{$perc} = "$_ - $count ($perc %)";
+       }
+
+       ### can be compressed to a map?
+       my @list;
+       foreach ( sort { $a <=> $b } keys %sorted ) {
+           push(@list, $sorted{$_});
+       }
+
+       &pSReply( &formListReply(0, "IRC Client versions for $chan ", @list) );
+
+       undef %ver;     # clean it up.
+    } );
+
+    return;
+}
+
 1;