#!/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;