Net-YahooMessenger
view release on metacpan or search on metacpan
script/ymsg.pl view on Meta::CPAN
}
package CommandLineEventHandler;
use base 'Net::YahooMessenger::EventHandler';
use strict;
use constant STATUS_MESSAGE => [
"I'm Available",
'Be Right Back',
'Busy',
'Not At Home',
'Not At My Desk',
'Not In The Office',
'On The Phone',
'On Vacation',
'Out To Lunch',
'Stepped Out',
];
sub UnImplementEvent {
my $self = shift;
my $event = shift;
}
sub Login {
my $self = shift;
my $event = shift;
my $yahoo = $event->get_connection;
printf "[system] Friends for - %s\n", $event->from;
my $baddy_status = join "\n", map { $_->to_string } $yahoo->buddy_list;
print $baddy_status, "\n";
}
sub GoesOnline {
my $self = shift;
my $event = shift;
printf "[system] %s goes in.\n", $event->from;
}
sub GoesOffline {
my $self = shift;
my $event = shift;
if ( $event->from ) {
printf "[system] %s goes out.\n", $event->from;
}
else {
print
"[system] You have been logged off as you have logged in on a different machine.\n";
exit;
}
}
sub ChangeState {
my $self = shift;
my $event = shift;
my $busy_status =
$event->busy == 1 ? '(Busy) '
: $event->busy == 2 ? '(Sleep) '
: '';
my $message;
if ( $event->status_code == 99 ) {
$message = sprintf "[%s] %sTransit to '%s'\n",
$event->from, $busy_status, $event->body;
}
else {
$message = sprintf "[%s] %sTransit to '%s'\n",
$event->from, $busy_status, STATUS_MESSAGE->[ $event->status_code ];
}
print $message;
}
sub NewFriendAlert {
my $self = shift;
my $event = shift;
my $message =
sprintf "[system] New Friend Alert: %s added %s as a Friend.\n",
$event->from, $event->to;
$message .= sprintf "and also sent the following message: %s\n",
$event->body;
print $message;
}
sub ReceiveMessage {
my $self = shift;
my $event = shift;
my $body = $event->body;
$body =~ s{</?(?:font|FACE).+?>}{}g;
my $message = sprintf "[%s] %s\n", $event->from, $body;
print $message;
}
1;
__END__
( run in 1.091 second using v1.01-cache-2.11-cpan-39bf76dae61 )