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/.
- Signing in, sign out
- Send/receive instant messages
- Send/receive typing notifications
- Upload an avatar (PNG file) for itself
- Accept new add requests
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:
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.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();
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).
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Net::IM - Instant Messaging for Perl
by Hinrik (Novice) on Jul 16, 2011 at 16:32 UTC |