Amethyst
view release on metacpan or search on metacpan
Amethyst/Connection/IRC.pm view on Meta::CPAN
package Amethyst::Connection::IRC;
use strict;
use vars qw(@ISA);
use Data::Dumper;
use POE;
use POE::Component::IRC;
use Parse::Lex;
use Amethyst::Connection;
use Amethyst::Message;
@ISA = qw(Amethyst::Connection);
sub handler_init {
my ($kernel, $session, $heap) = @_[KERNEL, SESSION, HEAP];
print STDERR "Init IRC\n";
my @events = qw(
irc_connected irc_socketerr irc_001
irc_public irc_msg
irc_ctcp_action
process send
);
foreach my $event (@events) {
$session->register_state($event, __PACKAGE__, "handler_$event");
}
my $ircalias = $heap->{Args}->{ClientAlias} || 'amethyst irc';
my $client = new POE::Component::IRC($ircalias);
$heap->{Client} = $client->ID;
print STDERR "Started IRC client " . $heap->{Client} . "\n";
$kernel->post($heap->{Client}, 'register',
qw(001 public msg ctcp_action));
}
sub handler_connect {
my ($kernel, $session, $heap) = @_[KERNEL, SESSION, HEAP];
local *::args = $heap->{Args};
my $nick = $::args{Nick} || 'Amethyst';
my $server = $::args{Server} || 'london.rhizomatic.net';
my $port = $::args{Port} || 6667;
my $username = $::args{Username} || 'amethyst';
my $ircname = $::args{Ircname} || 'Amethyst by Shevek';
$kernel->post($heap->{Client}, 'connect', {
Nick => $nick,
Server => $server,
Port => $port,
Username => $username,
Ircname => $ircname,
} );
}
sub handler_disconnect {
my ($kernel, $session, $heap) = @_[KERNEL, SESSION, HEAP];
$kernel->post($heap->{Client}, 'quit', 'Received quit signal');
}
sub handler_send {
( run in 2.183 seconds using v1.01-cache-2.11-cpan-75ffa21a3d4 )