5 use POE qw(Component::IRC);
7 #----------------------------------------------------------------------
8 # Start of configuration.
10 my $nick = "xavierbot";
11 my $ircname = "Xavierbot"; # Printable name.
12 my $server = "devserv.devel.redhat.com";
15 my @channels = ("#ocaml");
17 # End of configuration.
18 #----------------------------------------------------------------------
20 my $irc = POE::Component::IRC->spawn (
25 ) or die "POE::Component::IRC->spawn failed: $!";
27 POE::Session->create (
29 main => [ qw(_default _start irc_001 irc_public) ],
31 heap => { irc => $irc },
38 my ($kernel, $heap) = @_[KERNEL,HEAP];
40 my $irc_session = $heap->{irc}->session_id ();
41 $kernel->post ($irc_session => register => "all");
42 $kernel->post ($irc_session => connect => { });
47 my ($kernel, $sender) = @_[KERNEL,SENDER];
49 my $poco_object = $sender->get_heap ();
50 print "Connected to ", $poco_object->server_name (), "\n";
52 $kernel->post ($sender => join => $_ ) for @channels;
57 my ($kernel, $sender, $who, $where, $what) =
58 @_[KERNEL,SENDER,ARG0,ARG1,ARG2];
59 my $nick = (split /!/, $who)[0];
60 my $channel = $where->[0];
63 if (my ($rot13) = $what =~ /^rot13 (.+)/) {
64 $rot13 =~ tr[a-zA-Z][n-za-mN-ZA-M];
65 $kernel->post ($sender => privmsg => $channel => "$nick: $rot13");
71 my ($event, $args) = @_[ARG0 .. $#_];
72 my @output = ("$event: ");
74 foreach my $arg (@$args) {
75 if (ref ($arg) eq "ARRAY") {
76 push @output, "[" . join (" ,", @$arg) . "]";
78 push @output, "'$arg'";
81 print STDOUT join " ", @output, "\n";