rendered paste body#!/usr/bin/perl -w
use strict;
use POE;
use POE::Component::IRC;
use POE::Component::IRC::State;
my ($nut) = POE::Component::IRC::State->spawn() or die;
my $nick = 'tok3y';
my $info;
my @nickinfo;
sub _start {
my ($bot) = $_[KERNEL];
$bot->post( 'tok3y', 'register', 'all' );
$bot->post(
'tok3y',
'connect',
{
Debug => 1,
Nick => $nick,
Server => $ARGV[0] || 'irc.dal.net',
Port => $ARGV[1] || 6667,
Username => 'fire',
Ircname => "fire it up baby",
}
);
$bot->sig( INT => "sigint" );
}
sub irc_001 {
my ($bot) = $_[KERNEL];
$bot->post( 'tok3y', 'mode', $nick, '+i' );
$bot->post( 'tok3y', 'away', "brb" );
$bot->post( 'tok3y', 'join', '#dab' );
}
sub irc_chan_sync {
my ( $channel, $nicks, $list ) = @_[ ARG0 .. ARG2 ];
print "channel: $channel , nicks $nicks , list $list";
}
sub irc_disconnected {
my ($server) = $_[ARG0];
print "Lost connection to server $server.\n";
$_[KERNEL]->post( "tok3y", "unregister", "all" );
}
sub irc_error {
my $err = $_[ARG0];
print "Server error occurred! $err\n";
}
sub irc_socketerr {
my $err = $_[ARG0];
print "Couldn't connect to server: $err\n";
}
sub sigint {
my $bot = $_[KERNEL];
$bot->post( 'tok3y', 'quit', 'Outta here' );
$bot->sig_handled();
$_[HEAP]->{readline_wheel};
$bot->yield( unregister => 'all' );
$bot->yield('shutdown');
}
sub _stop {
my ($bot) = $_[KERNEL];
print "Control session stopped.\n";
}
#channel related
sub irc_public {
my ( $bot, $who, $chan, $msg ) = @_[ KERNEL, ARG0 .. ARG2 ];
$who =~ s/^(.*)!.*$/$1/ or die "Weird-ass who: $who";
if ($msg =~ /\!nickinfo/) {
my @nick_info = map { $bot->nick_info($_) } $bot->channel_list($chan);
print "\n\nnick info :@nickinfo\n\n"; } }
POE::Component::IRC->new('tok3y')
or die "Can't instantiate new IRC component!\n";
POE::Session->new(
'main' => [
qw(_start _stop irc_001 irc_disconnected sigint
irc_socketerr irc_error irc_public )
]
);
$poe_kernel->run();
exit 0;