|
|
 |
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.
|