/usr/local/CPAN/SkypeAPI/SkypeAPI/Robot.pm
package SkypeAPI::Robot;
use strict;
use warnings;
use SkypeAPI;
use SkypeAPI::Command;
use XiaoI;
use Data::Dumper;
our $VERSION = '0.04';
sub new {
my $class = shift;
my $opt = shift;
my $instance = {opt => $opt};
bless $instance, $class;
$instance->{robot_list} = {};
$instance->{message_list} = {};
return $instance;
}
sub handler {
my ($skype, $message) = @_;
print "[robot]I received message\n";
if ($message =~ m{^MESSAGE\s+(\d+) STATUS (RECEIVED|READ)}) {
my $message_id = $1;
my $status = $2;
print "[robot]I received message $message_id\n";
return 1 if $skype->{robot_manager}->{message_list}->{$message_id};
$skype->{robot_manager}->{message_list}->{$message_id} = 1;
my $CHATNAME = $skype->send_command( $skype->create_command( { string => "GET CHATMESSAGE $message_id CHATNAME" } ) );
$CHATNAME =~ s{.*?(CHATNAME)\s+}{}s;
print "CHATNAME :$CHATNAME \n";
if (not exists $skype->{robot_manager}->{robot_list}->{ $CHATNAME }) {
print "CREAET NEW ROBOT FOR THE CHAT\n";
my $robot = XiaoI->new;
$skype->{robot_manager}->{robot_list}->{$CHATNAME} = $robot;
}
my $body = $skype->send_command( $skype->create_command( { string => "GET CHATMESSAGE $message_id BODY" } ) );
$body =~ s{.*?(BODY)\s+}{}s;
print "body :$body \n";
my $robot = $skype->{robot_manager}->{robot_list}->{$CHATNAME};
my $text = $robot->get_robot_text($body);
$skype->send_command( $skype->create_command( { string => "CHATMESSAGE $CHATNAME $text" } ) );
}
return 1;
}
sub run {
my $self = shift;
my $skype = SkypeAPI->new();
$skype->{robot_manager} = $self;
$skype->register_handler(\&handler);
print "wait_available = " . $skype->attach , "\n";
$skype->listen();
}
1;