/[irc-logger]/trunk/bin/irc-logger.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/bin/irc-logger.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 6 by dpavlin, Mon Feb 27 12:41:10 2006 UTC revision 7 by dpavlin, Wed Mar 1 21:29:14 2006 UTC
# Line 18  log all conversation on irc channel Line 18  log all conversation on irc channel
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,
# Line 81  POE::Component::IRC->new($IRC_ALIAS); Line 81  POE::Component::IRC->new($IRC_ALIAS);
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 { }}

Legend:
Removed from v.6  
changed lines
  Added in v.7

  ViewVC Help
Powered by ViewVC 1.1.26