Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Net::IM - Instant Messaging for Perl

by Kirsle (Pilgrim)
on Jul 12, 2011 at 20:34 UTC ( #914006=CUFP: print w/ replies, xml ) Need Help??

Hello Monks,

I'm working on a new project called Net::IM, which has the aim of being for Perl what libpurple is for C/C++ - a set of modules for interacting with various instant messaging networks.

The first network I'm developing a module for is Yahoo Messenger, because Net::YMSG has been broken for 7 years, and there is already code out there for AIM and MSN and various other networks.

The code is still in development, and it has a Google Code project at http://code.google.com/p/perl-net-im/.

Currently, YMSG support is working well enough to run a chatterbot on it if you wanted. It supports:
  • Signing in, sign out
  • Send/receive instant messages
  • Send/receive typing notifications
  • Upload an avatar (PNG file) for itself
  • Accept new add requests
Adding/removing contacts from its contact list isn't fully implemented yet.

How It's Used

Your code can use Net::IM itself, which will allow you to manage multiple connections to multiple networks with just the one Net::IM object. This would be most similar to libpurple/Pidgin. Or, you can use the network modules directly, like Net::IM::YMSG.

Example:

my $im = Net::IM->new(debug => 1); my $yahoo = $im->addConnection ( network => "YMSG", username => "aidenrive", password => "big-secret", hexdump => 1, ); $im->addHandlers ( connected => \&on_connected, notification => \&on_notification, Message => \&on_message, Attention => \&on_buzzed, AddRequest => \&on_added, Typing => \&on_typing, BuddyStatus => \&on_buddy_status, BuddyList => \&on_buddylist, BuddyOnline => \&on_buddy_online, BuddyOffline => \&on_buddy_offline, Disconnected => \&on_disconnected, BuddyIconDownloaded => \&on_icon_downloaded, BuddyIconUploaded => \&on_icon_uploaded, ); $im->login(); $im->run();
The method names and event names are to be kept consistent among all the supported networks. So, setting handlers in Net::IM will cause those handlers to be called by every network that has a handler for that event.

Check it out if you have any interest. I plan on implementing thorough support for as many networks as possible (including file transfers and tricky things like that).

Comment on Net::IM - Instant Messaging for Perl
Download Code
Re: Net::IM - Instant Messaging for Perl
by Hinrik (Novice) on Jul 16, 2011 at 16:32 UTC
    Why not reuse the wheel by creating a Perl wrapper for libpurple instead?

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: CUFP [id://914006]
Approved by Corion
Front-paged by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (11)
As of 2014-10-31 20:04 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (223 votes), past polls