18 |
|
|
19 |
## CONFIG |
## CONFIG |
20 |
|
|
21 |
my $NICK = 'irc-logger'; |
my $NICK = 'irc-logger-dev'; |
22 |
my $CONNECT = |
my $CONNECT = |
23 |
{Server => 'irc.freenode.net', |
{Server => 'irc.freenode.net', |
24 |
Nick => $NICK, |
Nick => $NICK, |
81 |
POE::Session->create |
POE::Session->create |
82 |
(inline_states => |
(inline_states => |
83 |
{_start => sub { |
{_start => sub { |
84 |
$_[KERNEL]->post($IRC_ALIAS => register => 'all'); |
$_[KERNEL]->post($IRC_ALIAS => register => 'all'); |
85 |
$_[KERNEL]->post($IRC_ALIAS => connect => $CONNECT); |
$_[KERNEL]->post($IRC_ALIAS => connect => $CONNECT); |
86 |
}, |
}, |
87 |
irc_255 => sub { # server is done blabbing |
irc_255 => sub { # server is done blabbing |
88 |
$_[KERNEL]->post($IRC_ALIAS => join => $CHANNEL); |
$_[KERNEL]->post($IRC_ALIAS => join => $CHANNEL); |
89 |
$_[KERNEL]->post($IRC_ALIAS => join => '#logger'); |
$_[KERNEL]->post($IRC_ALIAS => join => '#logger'); |
90 |
$_[KERNEL]->yield("heartbeat"); # start heartbeat |
$_[KERNEL]->yield("heartbeat"); # start heartbeat |
91 |
# $_[KERNEL]->yield("my_add", $_) for keys %FOLLOWS; |
# $_[KERNEL]->yield("my_add", $_) for keys %FOLLOWS; |
92 |
}, |
}, |
93 |
irc_public => sub { |
irc_public => sub { |
94 |
my $kernel = $_[KERNEL]; |
my $kernel = $_[KERNEL]; |
95 |
my $nick = (split /!/, $_[ARG0])[0]; |
my $nick = (split /!/, $_[ARG0])[0]; |
96 |
my $channel = $_[ARG1]->[0]; |
my $channel = $_[ARG1]->[0]; |
97 |
my $msg = $_[ARG2]; |
my $msg = $_[ARG2]; |
98 |
|
|
99 |
from_to($msg, 'UTF-8', 'ISO-8859-2'); |
from_to($msg, 'UTF-8', 'ISO-8859-2'); |
100 |
|
|
101 |
print "$channel: <$nick> $msg\n"; |
print "$channel: <$nick> $msg\n"; |
102 |
$sth->execute($channel, $nick, $msg); |
$sth->execute($channel, $nick, $msg); |
103 |
}, |
}, |
104 |
|
irc_msg => sub { |
105 |
|
my $kernel = $_[KERNEL]; |
106 |
|
my $nick = (split /!/, $_[ARG0])[0]; |
107 |
|
my $msg = $_[ARG2]; |
108 |
|
from_to($msg, 'UTF-8', 'ISO-8859-2'); |
109 |
|
|
110 |
|
my $res = 'unknown command ' . $msg; |
111 |
|
|
112 |
|
print "<< $msg\n"; |
113 |
|
|
114 |
|
if ($msg =~ m/^stat.*\s*(\d*)/) { |
115 |
|
|
116 |
|
my $nr = $1 || 10; |
117 |
|
|
118 |
|
my $sth = $dbh->prepare(qq{ |
119 |
|
select nick,count(*) from log group by nick order by count desc limit $nr |
120 |
|
}); |
121 |
|
$sth->execute(); |
122 |
|
$res = "Top $nr users: "; |
123 |
|
while (my $row = $sth->fetchrow_hashref) { |
124 |
|
$res .= $row->{nick} . ': ' . $row->{count} . ", "; |
125 |
|
} |
126 |
|
} |
127 |
|
|
128 |
|
$res =~ s/,\s*$//; |
129 |
|
print ">> [$nick] $res\n"; |
130 |
|
|
131 |
|
from_to($res, 'ISO-8859-2', 'UTF-8'); |
132 |
|
$_[KERNEL]->post( $IRC_ALIAS => privmsg => $nick, $res ); |
133 |
|
|
134 |
|
}, |
135 |
|
irc_505 => sub { |
136 |
|
print "# irc_505: ",$_[ARG1], "\n"; |
137 |
|
$_[KERNEL]->post( $IRC_ALIAS => privmsg => 'nickserv', "register $NICK" ); |
138 |
|
warn "## register $NICK\n"; |
139 |
|
$_[KERNEL]->post( $IRC_ALIAS => privmsg => 'nickserv', "IDENTIFY $NICK" ); |
140 |
|
warn "## indetify $NICK\n"; |
141 |
|
}, |
142 |
(map |
(map |
143 |
{ |
{ |
144 |
;"irc_$_" => sub { }} |
;"irc_$_" => sub { }} |