getawayreason.pl
# this script fixes the awaystatus in the statusbar when the server sets you away
use Irssi;
use Irssi::Irc;
use strict;
use vars qw($VERSION %IRSSI);
$VERSION = "1.02";
%IRSSI = (
authors => 'Valentin Batz',
contact => 'senneth@irssi.org',
name => 'getawayreason',
description => 'gets the awayreason when the server sets you away on connect',
url => 'http://www.oberkommando.org/~senneth/irssi/scripts/',
license => 'GPLv2',
revision => '$LastChangedRevision: 448 $',
changed => '$LastChangedDate: 2007-12-12 22:11:56 +0100 (Mi, 12 Dez 2007) $',
version => $VERSION,
);
sub event_away {
my ($server) = @_;
# the server set us away, see if we have the away-reason
if ($server->{away_reason} eq "") {
#we don't have the away reason yet, so we /whois ourselfs
Irssi::signal_stop();
my $arg = $server->{nick};
$server->redirect_event('whois', 1, $arg, -1, '', {
'event 301' => 'redir whois_away',
'' => 'event empty' });
$server->send_raw("WHOIS :$arg");
}
}
sub event_reason {
my ($server, $data) = @_;
my (undef, $awayreason) = split (/ :/, $data, 2);
if (defined $awayreason && $awayreason ne "") {
$server->command('^AWAY -one '.$awayreason);
Irssi::signal_stop();
}
}
Irssi::signal_add_first('event 306', 'event_away');
Irssi::signal_add_first('redir whois_away', 'event_reason');