Show someone's idle times for the server and each channel you share in common.
Handy if you're being a nosy stalker. Replaces /whois in most cases.
Usage: /idle Raccoon
; Use: /idle <nickname>
ALIAS idle { ; by Raccoon 10-July-2013 13-aug-2013
.raw WHOIS $$1 $1
.enable #idle_whois
hinc -mu5 idle_whois cnt 1
.timerIDLE_WHOIS -oi 1 5 .disable #idle_whois $(|) hfree -w idle_whois
}
#idle_whois off
RAW 319:*: { hadd -mu5 idle_whois $cid $+ $2 $+ .chans $hget(idle_whois,$cid $+ $2 $+ .chans) $3- | halt }
RAW 317:*: { hadd -mu5 idle_whois $cid $+ $2 $+ .idle $3-4 | halt }
RAW 318:*: {
VAR %PRECISION = 2
var %nick = $2
var %chans = $hget(idle_whois,$cid $+ $2 $+ .chans)
var %idles = $hget(idle_whois,$cid $+ $2 $+ .idle)
var %idle = $gettok(%idles,1,32), %signon = $gettok(%idles,2,32)
var %i = 1, %cidles, %rchans = %chans
if ($query(%nick)) { var %cidles = $query(%nick).idle $+ :Query }
if ($chat(%nick)) { var %cidles = %cidles $chat(%nick).idle $+ :Chat }
WHILE $gettok(%chans,%i,32) {
var %pchan = $v1
var %chan = $regsubex(%pchan,/^[^ $chantypes ]*/x,)
var %cidle = $nick(%chan,%nick).idle
if (%cidle != $null) {
var %cidles = %cidles %cidle $+ : $+ %pchan
var %rchans = $remtok(%rchans,%pchan,1,32)
}
inc %i
}
var %cidles = $sorttok(%cidles,32,n)
var %i = 1, %chanidles
WHILE $gettok(%cidles,%i,32) {
var %pchan = $gettok($v1,2,58)
var %cidle = $gettok($v1,1,58)
var %chanidles = %chanidles %pchan $+ [[ $+ $dur(%cidle,%PRECISION) $+ ]]
inc %i
}
echo -atic whois * $2 signed on $dur($calc($ctime - %signon),2) $+ , idle $dur(%idle,2) $+ , %chanidles %rchans
hdel -w idle_whois $cid $+ $2 $+ .*
hdec -m idle_whois cnt 1
if (!$hget(idle_whois,cnt)) { .disable #idle_whois | hfree -w idle_whois }
halt
}
RAW *:*: halt
#idle_whois end
;$duration(12345678) = 20wks 2days 21hrs 21mins 18secs / $dur(12345678) = 20w2d21h21m18s / $dur(12345678,2) = 20w2d
ALIAS dur { return $regsubex($gettok($duration($1),1- $+ $2,32),/(\d+\w)\D*/g,\t) } ; by Raccoon
Cutting code you understand isnt smart, unless you still understand it afterwards.