twitter.pl


use strict;
use vars qw($VERSION %IRSSI);

use Irssi;
use URI::Escape;

$VERSION = '1.02';
%IRSSI = (
    authors	=> 'Jared Burke',
    contact	=> 'Jared@anal0g.org',
    name	=> 'twitter',
    description	=> 'Posts topics and !twitter <tweet> to twitter.',
    license	=> 'Public Domain',
    url		=> 'http://anal0g.org/dev/',
    changed	=> 'Tue Jun 17 07:14 CET 2008',
);

my $user = "twitter_user";
my $pass = "twitter_pass";
my $channel = "#channel";

sub topic {
    my ($server, $args, $nick, $uh) = @_;
    my ($chan, $topic) = split(/ :/, $args);
    if ($chan eq $channel) {
	my $tweet = "Topic: " . $topic;
	twitter($tweet);
    }    
}

sub public {
    my ($server, $msg, $nick, $address, $target) = @_;
    if ($target eq $channel) {
	if ($msg =~ /^!twitter .*/i) {
	    $msg =~ s/^!twitter //;
	    my $tweet = $nick . ": " . $msg;
	    twitter($tweet);
	}
    }
}

sub twitter {
    my $status = uri_escape(@_);
    $status =~ s/\x03\d?\d?(,\d?\d?)?|\x02|\x1f|\x16|\x06|\x07//g;
     `wget -q -O /dev/null --user=$user --password=$pass --post-data="status=$status" http://twitter.com/statuses/update.xml`;
}

Irssi::signal_add("message public", "public");
Irssi::signal_add('event topic', 'topic');