diff options
| author | Alexander Færøy | 2014-05-31 13:10:46 +0200 | 
|---|---|---|
| committer | Alexander Færøy | 2014-05-31 13:10:46 +0200 | 
| commit | 2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1 (patch) | |
| tree | 1c5e6d817c88e67b46e216a50e0aef5428bf63df /scripts/idletime.pl | |
| parent | 2d080422d79d1fd49d6c5528593ccaaff9bfc583 (diff) | |
| download | scripts.irssi.org-2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1.tar.bz2 | |
Import scripts from scripts.irssi.org
Diffstat (limited to 'scripts/idletime.pl')
| -rw-r--r-- | scripts/idletime.pl | 70 | 
1 files changed, 70 insertions, 0 deletions
| diff --git a/scripts/idletime.pl b/scripts/idletime.pl new file mode 100644 index 0000000..34c5085 --- /dev/null +++ b/scripts/idletime.pl @@ -0,0 +1,70 @@ +#!/usr/bin/perl +# +# Do you feel tired of typing /wii ick nick? +# Just try idletime.pl :) +# By Stefan "tommie" Tomanek (stefan@kann-nix.org) + +use strict; +use Irssi; + +use vars qw($VERSION %IRSSI); + +$VERSION = "20030208"; +%IRSSI = ( +    authors     => "Stefan 'tommie' Tomanek", +    contact     => "stefan\@pico.ruhr.de", +    name        => "idletime", +    description => "Retrieves the idletime of any nick", +    license     => "GPLv2", +    url         => "", +    changed     => "$VERSION", +    commands    => "idle" +); + + + +my %nicks; + +sub cmd_idle { +    my ($nicks, $server) = @_; +    foreach (split(/\s+/, $nicks)) { +	push @{$nicks{$server->{chatnet}}}, $_; +	$server->command("whois ".$_." ".$_); +    } +} + +sub event_server_event { +    my ($server, $text, $nick, $user) = @_; +    my @items = split(/ /,$text); +    my $type = $items[0]; +     +    if ( ($type eq 301) or ($type eq "311") or ($type eq "312") or ($type eq "317") or ($type eq "318") or ($type eq "319") ) { +	my $name = $items[2]; +	my $i = 0; +	if ( has_item($name,@{$nicks{$server->{chatnet}}}) ) { +	    Irssi::signal_stop(); +	    print_idletime($name, $server, $items[3]) if ($type eq "317"); +	    splice(@{$nicks{$server->{chatnet}}},$i,1) if ($type eq "318"); +	    $i++; +	} +    } +} + +sub has_item { +    my ($item, @list) = @_; +    foreach (@list) { +	$item == $_ && return(1); +    } +    return(0) +} + +sub print_idletime { +    my ($name, $ircnet, $time) = @_; +    my $hours = int($time / 3600); +    my $minutes = int(($time % 3600)/60); +    my $seconds = int(($time % 3600)%60); +    $ircnet->print(undef,$name." is idle for ".$hours." hours, ".$minutes." minutes and ".$seconds." seconds.", MSGLEVEL_CRAP); +} + +Irssi::command_bind('idle', 'cmd_idle'); +Irssi::signal_add('server event', 'event_server_event'); | 
