POE::Component::IRC::QUser3Contributed Perl DocumPOE::Component::IRC::Qnet(3p)



NAME
       POE::Component::IRC::Qnet - A fully event-driven IRC client module for
       Quakenet

SYNOPSIS
        use strict;
        use warnings;
        use POE qw(Component::IRC::Qnet);

        my $nickname = 'Flibble' . $$;
        my $ircname = 'Flibble the Sailor Bot';
        my $port = 6667;
        my $qauth = 'FlibbleBOT';
        my $qpass = 'fubar';
        my @channels = ( '#Blah', '#Foo', '#Bar' );

        # We create a new PoCo-IRC object and component.
        my $irc = POE::Component::IRC::Qnet->spawn(
            nick => $nickname,
            port => $port,
            ircname => $ircname,
        ) or die "Oh noooo! $!";

        POE::Session->create(
            package_states => [
                main => [ qw(_default _start irc_001 irc_public) ],
            ],
            heap => { irc => $irc },
        );

        $poe_kernel->run();

        sub _start {
            my ($kernel, $heap) = @_[KERNEL, HEAP];

            # We get the session ID of the component from the object
            # and register and connect to the specified server.
            my $irc_session = $heap->{irc}->session_id();
            $kernel->post( $irc_session => register => 'all' );
            $kernel->post( $irc_session => connect => { } );
            return;
        }

        sub irc_001 {
            my ($kernel, $sender) = @_[KERNEL, SENDER];

            # Get the component's object at any time by accessing the heap of
            # the SENDER
            my $poco_object = $sender->get_heap();
            print "Connected to ", $poco_object->server_name(), "\n";

            # Lets authenticate with Quakenet's Q bot
            $kernel->post( $sender => qbot_auth => $qauth => $qpass );

            return;
        }

        sub irc_public {
            my ($kernel, $sender, $who, $where, $what) = @_[KERNEL, SENDER, ARG0 .. ARG2];
            my $nick = ( split /!/, $who )[0];
            my $channel = $where->[0];

            if ( my ($rot13) = $what =~ /^rot13 (.+)/ ) {
                $rot13 =~ tr[a-zA-Z][n-za-mN-ZA-M];
                $kernel->post( $sender => privmsg => $channel => "$nick: $rot13" );
            }
            return;
        }

        # We registered for all events, this will produce some debug info.
        sub _default {
            my ($event, $args) = @_[ARG0 .. $#_];
            my @output = ( "$event: " );

            for my $arg ( @$args ) {
                if (ref $arg eq 'ARRAY') {
                    push( @output, '[' . join(', ', @$arg ) . ']' );
                }
                else {
                    push ( @output, "'$arg'" );
                }
            }
            print join ' ', @output, "\n";
            return 0;
        }

DESCRIPTION
       POE::Component::IRC::Qnet is an extension to POE::Component::IRC
       specifically for use on Quakenet <http://www.quakenet.org/>. See the
       documentation for POE::Component::IRC for general usage.  This document
       covers the extensions.

       The module provides a number of additional commands for communicating
       with the Quakenet service bot Q.

METHODS
   "service_bots"
       The component will query Q its default name on Quakenet. If you wish to
       override these settings, use this method to configure them.

        $irc->service_bots(QBOT => 'W@blah.network.net');

       In most cases you shouldn't need to mess with these >;o)

INPUT
       The Quakenet service bots accept input as PRIVMSG. This module provides
       a wrapper around the POE::Component::IRC "privmsg" command.

   "qbot_*"
       Send commands to the Q bot. Pass additional command parameters as
       arguments to the event.

        $kernel->post ('my client' => qbot_auth => $q_user => $q_pass);

OUTPUT
       All output from the Quakenet service bots is sent as NOTICEs.  Use
       "irc_notice" to trap these.

   "irc_whois"
       Has all the same hash keys in "ARG1" as POE::Component::IRC, with the
       addition of 'account', which contains the name of their Q auth account,
       if they have authed, or a false value if they haven't.

BUGS
       A few have turned up in the past and they are sure to again. Please use
       <http://rt.cpan.org/> to report any. Alternatively, email the current
       maintainer.

AUTHOR
       Chris 'BinGOs' Williams <chris@bingosnet.co.uk>

       Based on the original POE::Component::IRC by:

       Dennis Taylor, <dennis@funkplanet.com>

SEE ALSO
       POE::Component::IRC

       <http://www.quakenet.org/>



perl v5.12.2                      2010-11-05     POE::Component::IRC::Qnet(3p)
