GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  POE::COMPONENT::IRC::COOKBOOK::BASICBOT (3)

.ds Aq ’

NAME

POE::Component::IRC::Cookbook::BasicBot - A basic IRC bot

CONTENTS

SYNOPSIS

This a very basic bot that connects to IRC, joins a few channels, and announces its arrival.

DESCRIPTION

We start off quite simply:



 #!/usr/bin/env perl

 use strict;
 use warnings;



Then we use the stuff we’re going to...well, use. ::State is a subclass which keeps track of state information related to channels and nicknames. It is needed by the AutoJoin plugin which takes care of keeping us on our channels.



 use POE;
 use POE::Component::IRC::State;
 use POE::Component::IRC::Plugin::AutoJoin;



Next up is our POE session. We create it and list our event handlers. We then start the POE kernel.



 POE::Session->create(
     package_states => [
         main => [ qw(_start irc_join) ]
     ]
 );

 $poe_kernel->run();



Now all we have to do is write the handlers for _start and irc_join. In _start, we create our IRC component, add an AutoJoin plugin, register for the irc_join event, and connect to the IRC server.



 sub _start {
     my $irc = POE::Component::IRC::State->spawn(
         Nick   => basic_bot,
         Server => irc.freenode.net,
     );

     $irc->plugin_add(AutoJoin, POE::Component::IRC::Plugin::AutoJoin->new(
        Channels => [ #test_channel1, #test_channel2 ]
     ));

     $irc->yield(register => join);
     $irc->yield(connect);
 }



Now comes our irc_join event handler. We send a message to the channel once we’ve joined it.



 sub irc_join {
     my $nick = (split /!/, $_[ARG0])[0];
     my $channel = $_[ARG1];
     my $irc = $_[SENDER]->get_heap();

     # only send the message if we were the one joining
     if ($nick eq $irc->nick_name()) {
         $irc->yield(privmsg => $channel, Hi everybody!);
     }
 }



That’s it!

AUTHOR

Hinrik Oern Sigurd`sson, hinrik.sig@gmail.com
Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 POE::COMPONENT::IRC::COOKBOOK::BASICBOT (3) 2014-06-28

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.