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 )