--- trunk/irc-logger.pl 2006/06/25 17:48:33 38 +++ trunk/irc-logger.pl 2006/10/24 12:51:49 41 @@ -50,6 +50,8 @@ my $ENCODING = 'ISO-8859-2'; my $TIMESTAMP = '%Y-%m-%d %H:%M:%S'; +my $sleep_on_error = 5; + ## END CONFIG @@ -476,18 +478,25 @@ my $nr = $1 || 10; my $sth = $dbh->prepare(qq{ - select nick,count(*) from log group by nick order by count desc limit $nr + select + nick, + count(*) as count, + sum(length(message)) as len + from log + group by nick + order by len desc,count desc + limit $nr }); $sth->execute(); $res = "Top $nr users: "; my @users; while (my $row = $sth->fetchrow_hashref) { - push @users,$row->{nick} . ': ' . $row->{count}; + push @users,$row->{nick} . ': ' . $row->{count} . '/' . $row->{len} . '=' . sprintf("%.2f", $row->{len}/$row->{count}); } $res .= join(" | ", @users); } elsif ($msg =~ m/^last.*?\s*(\d*)/i) { - foreach my $res (get_from_log( limit => $1 )) { + foreach my $res (get_from_log( limit => ($1 || 100) )) { print "last: $res\n"; from_to($res, $ENCODING, 'UTF-8'); $_[KERNEL]->post( $IRC_ALIAS => privmsg => $nick, $res ); @@ -533,6 +542,15 @@ warn "## indetify $NICK\n"; $_[KERNEL]->post( $IRC_ALIAS => privmsg => 'nickserv', "IDENTIFY $NICK" ); }, + irc_disconnected => sub { + warn "## disconnected, reconnecting again\n"; + $_[KERNEL]->post($IRC_ALIAS => connect => $CONNECT); + }, + irc_socketerr => sub { + warn "## socket error... sleeping for $sleep_on_error seconds and retry"; + sleep($sleep_on_error); + $_[KERNEL]->post($IRC_ALIAS => connect => $CONNECT); + }, # irc_433 => sub { # print "# irc_433: ",$_[ARG1], "\n"; # warn "## indetify $NICK\n";