spacer

Webref WebRef   Sitemap · Experts · Tools · Services · Newsletters · About i.com

home / experts / perl / tutorial 13

A P2P AIM Robot in Perl

Developer News
Microsoft Shows Off Silverlight 4, IE9 Plans
Metasploit Expands Vulnerability Test Framework
HyperCard Reborn?

Getting Interactive

Replying to messages

Not only can we send messages to AIM users, but we can also receive and respond to them. The on_im event is initialized when another AIM users sends a message to your AIM client. We can capture this information and send a reply.

#!/usr/bin/perl -w
use strict;
use Net::AIM;

my $nick = "motherofperl";
my $aim = new Net::AIM;

$aim->debug(1);
my $conn = $aim->newconn(Screenname   => 'motherofperlbot',
			 Password     => 'motherofperl')
    or die "Can't connect to AIM server.\n";

$conn->add_handler('config',    \&on_config);
$conn->add_handler('im_in',    \&on_im);
$conn->add_handler('error',    \&on_error);

$aim->start;

sub on_config {
    my ($self, $event) = @_;
    my ($str) = $event->args;
    $self->set_config($str);
    $self->send_im($nick, 'testing...');
}

sub on_error {
	my ($self, $event) = @_;
	my $error;
	my @stuff;
	($error, @stuff) = $event->args;
	my $errstr = $event->trans($error);
	$errstr =~ s/\$(\d+)/$stuff[$1]/ge;
	print STDERR "ERROR: $errstr\n";
}

sub on_im {
    my ($self, $event) = @_;
    my ($nick) = $event->from;
    print $event->dump;
    my @args = $event->args;
    $self->send_im($nick, "Hi $nick. You said: $args[2]");
}

The script above is identical except for two additional handlers. One to handle the error and one to handle on_im which is called when we receive a message. The event arguments are retrieved by calling the args method of the $event scalar, which returns an array. The message that was sent is contained in the third element of the array, which we send back to the sender in the on_im subroutine.


home / experts / perl / tutorial 13

http://www.internet.com