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 )