X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2FCommandStubs.pl;h=1a55669aef5b19ad323f1480aa82a45997506e3f;hb=c68ac9b2d4b88535c1a2cfa695f6c4f683f0373c;hp=9b9eec568a7916d7e412aa47d3491891e30f6eeb;hpb=3192b5c2d5d0f4218b2e4a41f81827bca445ee0c;p=infobot.git diff --git a/src/CommandStubs.pl b/src/CommandStubs.pl index 9b9eec5..1a55669 100644 --- a/src/CommandStubs.pl +++ b/src/CommandStubs.pl @@ -73,7 +73,7 @@ sub parseCmdHook { } if ($hash{NoArgs} and $flatarg) { - &DEBUG("cmd $ident does not take args; skipping."); + &DEBUG("cmd $ident does not take args ('$flatarg'); skipping."); next; } @@ -280,6 +280,11 @@ sub Modules { $itc =~ s/([^\w\s])/\\$1/g; my $z = join '|', split ' ', $itc; + if ($msgType eq "privmsg" and $message =~ / ($mask{chan})$/) { + &DEBUG("ircTC: privmsg detected; chan = $1"); + $chan = $1; + } + if ($message =~ /^_stats(\s+(\S+))$/i) { &textstats_main($2); return; @@ -317,7 +322,7 @@ sub Modules { } } my $topstr = ""; - &DEBUG("tp => $tp"); + &DEBUG("*stats: tp => $tp"); if (scalar @top) { $topstr = ". Top ".scalar(@top).": ".join(', ', @top); } @@ -724,7 +729,7 @@ sub lart { } } - my $line = &getRandomLineFromFile($bot_misc_dir. "/blootbot.lart"); + my $line = &getRandomLineFromFile($bot_data_dir. "/blootbot.lart"); if (defined $line) { if ($target =~ /^(me|you|itself|\Q$ident\E)$/i) { $line =~ s/WHO/$who/g; @@ -797,12 +802,24 @@ sub do_verstats { return; } - &msg($who, "Sending CTCP VERSION..."); + &msg($who, "Sending CTCP VERSION to #$chan..."); $conn->ctcp("VERSION", $chan); $cache{verstats}{chan} = $chan; $cache{verstats}{who} = $who; $cache{verstats}{msgType} = $msgType; + $conn->schedule(30, sub { + my $c = lc $cache{verstats}{chan}; + @vernicktodo = (); + + foreach (keys %{ $channels{$c}{''} } ) { + next if (grep /^\Q$_\E$/i, @vernick); + push(@vernicktodo, $_); + } + + &verstats_flush(); + } ); + $conn->schedule(60, sub { my $vtotal = 0; my $c = lc $cache{verstats}{chan}; @@ -820,7 +837,7 @@ sub do_verstats { my $unknown = $total - $vtotal; my $perc = sprintf("%.1f", $unknown * 100 / $total); $perc =~ s/.0$//; - $sorted{$perc}{"unknown/cloak"} = "$unknown ($perc%)"; + $sorted{$perc}{"unknown/cloak"} = "$unknown ($perc%)" if ($unknown); foreach (keys %ver) { my $count = scalar keys %{ $ver{$_} }; @@ -849,6 +866,19 @@ sub do_verstats { return; } +sub verstats_flush { + for (1..5) { + last unless (scalar @vernicktodo); + + my $n = shift(@vernicktodo); + $conn->ctcp("VERSION", $n); + } + + return unless (scalar @vernicktodo); + + $conn->schedule(3, \&verstats_flush() ); +} + sub textstats_main { my($arg) = @_; @@ -881,7 +911,7 @@ sub textstats_main { } my $topstr = ""; - &DEBUG("tp => $tp"); + &DEBUG("*stats: tp => $tp"); if (scalar @top) { $topstr = ". Top ".scalar(@top).": ".join(', ', @top); }