my %new;
foreach (keys %userstats) {
next unless (exists $userstats{$_}{'Count'});
+ if ($userstats{$_}{'Count'} =~ /^\D+$/) {
+ &WARN("userstats{$_}{Count} is non-digit.");
+ next;
+ }
+
$new{$_} = $userstats{$_}{'Count'};
}
- my($count) = (sort { $b <=> $a } keys %new)[0];
+ my($count) = (sort { $a <=> $b } keys %new)[0];
if ($count) {
$reply .= ". \002$count\002 has said the most with a total of \002$new{$count}\002 messages";
}
sub karma {
my $target = lc( shift || $who );
- my $karma = &dbGet("karma", "nick",$target,"karma") || 0;
+ my $karma = &dbGet("stats", "counter", "nick='$target' and type='karma'") || 0;
if ($karma != 0) {
&pSReply("$target has karma of $karma");
&status("tell: target = $target, query = $query");
# "intrusive".
- if ($target !~ /^$mask{chan}$/ and !&IsNickInAnyChan($target)) {
- &msg($who, "No, $target is not in any of my chans.");
- return;
- }
-
- ### TODO: don't "tell" if sender is not in target's channel.
+# if ($target !~ /^$mask{chan}$/ and !&IsNickInAnyChan($target)) {
+# &msg($who, "No, $target is not in any of my chans.");
+# return;
+# }
# self.
if ($target eq $ident) { # lc?
# utime(13) + stime(14).
my $cpu_usage = sprintf("%.01f", ($data[13]+$data[14]) / 100 );
+ # cutime(15) + cstime (16).
+ my $cpu_usage2 = sprintf("%.01f", ($data[15]+$data[16]) / 100 );
my $time = time() - $^T;
my $raw_perc = $cpu_usage*100/$time;
+ my $raw_perc2 = $cpu_usage2*100/$time;
my $perc;
+ my $perc2;
if ($raw_perc > 1) {
$perc = sprintf("%.01f", $raw_perc);
+ $perc2 = sprintf("%.01f", $raw_perc2);
} elsif ($raw_perc > 0.1) {
$perc = sprintf("%.02f", $raw_perc);
+ $perc2 = sprintf("%.02f", $raw_perc2);
} else { # <=0.1
$perc = sprintf("%.03f", $raw_perc);
+ $perc2 = sprintf("%.03f", $raw_perc2);
}
- &pSReply("Total CPU usage: $cpu_usage s ... Percentage CPU used: $perc %");
- &DEBUG("15 => $data[15] (cutime)");
- &DEBUG("16 => $data[16] (cstime)");
+ &pSReply("Total CPU usage: $cpu_usage s ... Percentage CPU used: $perc % (+childs: $perc2 %)");
return;
}