--- trunk/irc-logger.pl 2006/02/27 12:41:10 6 +++ trunk/irc-logger.pl 2006/03/01 21:29:14 7 @@ -18,7 +18,7 @@ ## CONFIG -my $NICK = 'irc-logger'; +my $NICK = 'irc-logger-dev'; my $CONNECT = {Server => 'irc.freenode.net', Nick => $NICK, @@ -81,26 +81,64 @@ POE::Session->create (inline_states => {_start => sub { - $_[KERNEL]->post($IRC_ALIAS => register => 'all'); - $_[KERNEL]->post($IRC_ALIAS => connect => $CONNECT); + $_[KERNEL]->post($IRC_ALIAS => register => 'all'); + $_[KERNEL]->post($IRC_ALIAS => connect => $CONNECT); }, irc_255 => sub { # server is done blabbing - $_[KERNEL]->post($IRC_ALIAS => join => $CHANNEL); - $_[KERNEL]->post($IRC_ALIAS => join => '#logger'); - $_[KERNEL]->yield("heartbeat"); # start heartbeat -# $_[KERNEL]->yield("my_add", $_) for keys %FOLLOWS; + $_[KERNEL]->post($IRC_ALIAS => join => $CHANNEL); + $_[KERNEL]->post($IRC_ALIAS => join => '#logger'); + $_[KERNEL]->yield("heartbeat"); # start heartbeat +# $_[KERNEL]->yield("my_add", $_) for keys %FOLLOWS; }, irc_public => sub { - my $kernel = $_[KERNEL]; - my $nick = (split /!/, $_[ARG0])[0]; - my $channel = $_[ARG1]->[0]; - my $msg = $_[ARG2]; + my $kernel = $_[KERNEL]; + my $nick = (split /!/, $_[ARG0])[0]; + my $channel = $_[ARG1]->[0]; + my $msg = $_[ARG2]; - from_to($msg, 'UTF-8', 'ISO-8859-2'); + from_to($msg, 'UTF-8', 'ISO-8859-2'); - print "$channel: <$nick> $msg\n"; - $sth->execute($channel, $nick, $msg); + print "$channel: <$nick> $msg\n"; + $sth->execute($channel, $nick, $msg); }, + irc_msg => sub { + my $kernel = $_[KERNEL]; + my $nick = (split /!/, $_[ARG0])[0]; + my $msg = $_[ARG2]; + from_to($msg, 'UTF-8', 'ISO-8859-2'); + + my $res = 'unknown command ' . $msg; + + print "<< $msg\n"; + + if ($msg =~ m/^stat.*\s*(\d*)/) { + + my $nr = $1 || 10; + + my $sth = $dbh->prepare(qq{ + select nick,count(*) from log group by nick order by count desc limit $nr + }); + $sth->execute(); + $res = "Top $nr users: "; + while (my $row = $sth->fetchrow_hashref) { + $res .= $row->{nick} . ': ' . $row->{count} . ", "; + } + } + + $res =~ s/,\s*$//; + print ">> [$nick] $res\n"; + + from_to($res, 'ISO-8859-2', 'UTF-8'); + $_[KERNEL]->post( $IRC_ALIAS => privmsg => $nick, $res ); + + }, + irc_505 => sub { + print "# irc_505: ",$_[ARG1], "\n"; + $_[KERNEL]->post( $IRC_ALIAS => privmsg => 'nickserv', "register $NICK" ); + warn "## register $NICK\n"; + $_[KERNEL]->post( $IRC_ALIAS => privmsg => 'nickserv', "IDENTIFY $NICK" ); + warn "## indetify $NICK\n"; + }, (map { ;"irc_$_" => sub { }}