From 63bb3591a247f165f2942993fd3c43f56bfe6f07 Mon Sep 17 00:00:00 2001 From: Jules Date: Tue, 20 Jan 2015 16:15:50 -0500 Subject: stats for remote users --- index.html | 1 + xdcc.pl | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/index.html b/index.html index 73803cc..16170e5 100644 --- a/index.html +++ b/index.html @@ -48,6 +48,7 @@ People can request files from you using these CTCP commands: /ctcp nick XDCC remove 3 # remove from queue /ctcp nick XDCC cancel # cancel file transfer /ctcp nick XDCC queue +/ctcp nick XDCC stats /ctcp nick XDCC help /ctcp nick XDCC about diff --git a/xdcc.pl b/xdcc.pl index f8ed92d..f1eb47c 100644 --- a/xdcc.pl +++ b/xdcc.pl @@ -69,6 +69,7 @@ my $help_remote = < '[%_XDCC%_] Tip: in irssi, type %_/set dcc_autoget ON%_', 'xdcc_cancelled' => '[%_XDCC%_] File transfer cancelled', + 'xdcc_stats' => '[%_XDCC%_] %s ... %_%s%_', 'xdcc_log' => "[%_XDCC%_] %s", + 'xdcc_hr' => "[%_XDCC%_] ----", 'xdcc_help' => $help_remote, 'xdcc_help_control' => $help_control, 'xdcc_about' => $help_about, @@ -159,6 +162,7 @@ sub ctcp_reply { elsif ($cmd eq "cancel") { xdcc_cancel($server, $nick) } elsif ($cmd eq "queue") { xdcc_queue($server, $nick) } elsif ($cmd eq "list") { xdcc_list($server, $nick) } + elsif ($cmd eq "stats") { xdcc_stats_remote($server, $nick) } elsif ($cmd eq "describe") { xdcc_describe($server, $nick, $index, $desc) } elsif ($cmd eq "version") { xdcc_message($server, $nick, 'xdcc_version') } elsif ($cmd eq "help") { xdcc_help($server, $nick) } @@ -322,6 +326,31 @@ sub xdcc_queue { } xdcc_message( $server, $nick, 'queue_length', scalar @queue, scalar @queue == 1 ? "" : "s" ) } +sub xdcc_stats_remote { + my ($server, $nick) = @_; + xdcc_message( $server, $nick, 'xdcc_stats', "xdcc.pl version", $VERSION); + + if (xdcc_is_trusted($server, $nick)) { + my @channel_names = map { $_->{'name'} } @channels; + xdcc_message( $server, $nick, 'xdcc_stats', 'trusted channels', join(' ', @channel_names)); + } + xdcc_message( $server, $nick, 'xdcc_stats', "files sent", $stats->{files_sent}); + xdcc_message( $server, $nick, 'xdcc_hr'); + + xdcc_message( $server, $nick, 'xdcc_log', 'top files'); + map { xdcc_message( $server, $nick, 'xdcc_stats', $_->[0], $_->[1]) } + sort { $b->[1] <=> $a->[1] } + map { [$_, $stats->{files}->{$_}] } + keys %{ $stats->{files} }; + xdcc_message( $server, $nick, 'xdcc_hr'); + + xdcc_message( $server, $nick, 'xdcc_log', 'top users'); + map { xdcc_message( $server, $nick, 'xdcc_stats', $_->[0], $_->[1]) } + sort { $b->[1] <=> $a->[1] } + map { [$_, $stats->{users}->{$_}] } + keys %{ $stats->{users} }; + xdcc_message( $server, $nick, 'xdcc_hr'); +} sub xdcc_advance { if ($timeout) { Irssi::timeout_remove($timeout) } undef $timeout; -- cgit v1.2.3-70-g09d2