All pastes #46221 Raw Edit

Someone

public text v1 · immutable
#46221 ·published 2006-03-19 10:31 UTC
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;