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