#!/usr/bin/perl use warnings; use strict; use Getopt::Long; use POE qw( Component::IRC ); my ( $nick, $server, $port, $channel ); $nick = "botel"; $server = "gnu.irc.org"; $port = 6667; $channel = "mdollar2"; GetOptions( 'port=i' => \$port, 'nick=s' => \$nick, 'server=s' => \$server, 'channel=s' => $channel ); POE::Session->create( inline_states => { _start => sub { warn "IRC-Bot running as $nick on $server:$port.\n"; POE::Component::IRC->new("bot"); POE::Kernel->post( bot => "register", qw( 376 public ) ); POE::Kernel->post( bot => "connect", { Server => $server, Port => $port, Nick => $nick, } ); }, irc_376 => sub { warn "Connected.\n"; POE::Kernel->post( bot => "join", "#" . $channel ) ? warn "$nick betritt $channel" : warn "$nick konnte $channel nicht betreten: $!"; }, irc_public => sub { my ( $nickmask, $dest, $text ) = @_[ ARG0, ARG1, ARG2 ]; $nickmask =~ /^([^!]+)/ or return; my $nickname = $1; warn "@$dest: <$nickname> $text\n"; }, irc_msg => sub { my ( $nickmask, $dest, $text ) = @_[ ARG0, ARG1, ARG2 ]; $nickmask =~ /^([^!]+)/ or return; POE::Kernel->post( "bot", privmsg => $1, "teh_wusch" ) #warn "@$dest: <$nickname> $text\n"; }, }, ); POE::Kernel->run; exit;