From 06cdd68faeade48ee8ccf771b468e2690a256b44 Mon Sep 17 00:00:00 2001 From: dms Date: Mon, 29 Jan 2001 15:04:09 +0000 Subject: [PATCH] added 'verstats' git-svn-id: https://svn.code.sf.net/p/infobot/code/trunk/blootbot@267 c11ca15a-4712-0410-83d8-924469b57eb5 --- src/CommandStubs.pl | 53 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/src/CommandStubs.pl b/src/CommandStubs.pl index 96ccce3..225749a 100644 --- a/src/CommandStubs.pl +++ b/src/CommandStubs.pl @@ -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; -- 2.39.2