1#!/usr/local/bin/perl 2# 3# by Stefan Tomanek <stefan@pico.ruhr.de> 4 5use strict; 6use vars qw($VERSION %IRSSI); 7$VERSION = "2003010201"; 8%IRSSI = ( 9 authors => "Stefan 'tommie' Tomanek", 10 contact => "stefan\@pico.ruhr.de", 11 name => "anotherway", 12 description => "Another auto away script", 13 license => "GPLv2", 14 changed => "$VERSION", 15); 16use Irssi 20020324; 17use vars qw($timer @signals); 18 19@signals = ('message own_public', 'message own_private'); 20 21sub go_away { 22 #Irssi::print "%R>>%n Going away...$timer"; 23 Irssi::timeout_remove($timer); 24 my $reason = Irssi::settings_get_str("anotherway_reason"); 25 my @servers = Irssi::servers(); 26 return unless @servers; 27 Irssi::signal_remove($_ , "reset_timer") foreach (@signals); 28 $servers[0]->command('AWAY '.$reason); 29 Irssi::signal_add($_ , "reset_timer") foreach (@signals); 30} 31 32sub reset_timer { 33 #Irssi::print "%R>>%n RESET"; 34 Irssi::signal_remove($_ , "reset_timer") foreach (@signals); 35 foreach (Irssi::servers()) { 36 $_->command('AWAY') if $_->{usermode_away}; 37 last; 38 } 39 #Irssi::signal_add('nd', "reset_timer"); 40 Irssi::timeout_remove($timer); 41 my $timeout = Irssi::settings_get_int("anotherway_timeout"); 42 $timer = Irssi::timeout_add($timeout*1000, "go_away", undef); 43 Irssi::signal_add($_, "reset_timer") foreach (@signals); 44} 45 46Irssi::settings_add_str($IRSSI{name}, 'anotherway_reason', 'a-nother-way'); 47Irssi::settings_add_int($IRSSI{name}, 'anotherway_timeout', 300); 48 49{ 50 Irssi::signal_add($_, "reset_timer") foreach (@signals); 51 reset_timer(); 52} 53 54print CLIENTCRAP '%B>>%n '.$IRSSI{name}.' '.$VERSION.' loaded'; 55