|
Joined: Feb 2003
Posts: 2,737
Hoopy frood
|
OP
Hoopy frood
Joined: Feb 2003
Posts: 2,737 |
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* Raccoon signed on 2w1d, idle 1s, @#raccoon[1s] Query[1m5s] Chat[1m12s] @#irchelp[2h9m] +#politics[15h6m] #efnet[2w1d] http://www.hawkee.com/snippet/10010/; 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 1 5 .disable #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 $remove($gettok($regsubex($duration($1),/(\d+\w)\S*/g,\t),1- $+ $2,32),$chr(32)) } ; by Raccoon
Well. At least I won lunch. Good philosophy, see good in bad, I like!
|
|
|
|
Joined: Feb 2003
Posts: 2,737
Hoopy frood
|
OP
Hoopy frood
Joined: Feb 2003
Posts: 2,737 |
Any suggestions on simplifying this script? It works nicely but doesn't look very elegant.
Well. At least I won lunch. Good philosophy, see good in bad, I like!
|
|
|
|
Deega
|
Deega
|
Couple of things I see at a quick look There's no reason for "var %nick = $2", just use $2. Why loop channel/query/chat's twice? Also just declare %rchans blank and add chans as needed.
var %i = 1, %cidles, %rchans
if ($query($2)) { %cidles = $+(Query[,$dur($query($2).idle,%PRECISION),]) }
if ($chat($2)) { %cidles = %cidles $+(Chat[,$dur($chat($2).idle,%PRECISION),]) }
WHILE $gettok(%chans,%i,32) {
var %pchan = $v1, %chan = $regsubex(%pchan,/^[^ $chantypes ]*/x,)
if ($nick(%chan,$2).idle isnum) { %cidles = %cidles $+(%pchan,[,$dur($v1,%PRECISION),]) }
else %rchans = %rchans %pchan
inc %i
}
Also
alias dur return $regsubex($gettok($duration($1),1- $2,32),/[kayrinec ]s?/g,)
Last edited by Deega; 18/08/13 11:05 PM.
|
|
|
|
Joined: Jan 2004
Posts: 1,330
Hoopy frood
|
Hoopy frood
Joined: Jan 2004
Posts: 1,330 |
There is a reason to use var %nick = $2; readability and maintainability.
|
|
|
|
Deega
|
Deega
|
If you look at his original code you'll see that both "%nick" and "$2" are being used throughout (even after setting %nick), there goes readability  As for maintainability, "$2" is always going to be... "$2" That will not change. 
|
|
|
|
Joined: Jan 2004
Posts: 1,330
Hoopy frood
|
Hoopy frood
Joined: Jan 2004
Posts: 1,330 |
But %nick might not always be $2
|
|
|
|
Joined: Sep 2005
Posts: 2,630
Hoopy frood
|
Hoopy frood
Joined: Sep 2005
Posts: 2,630 |
I prefer to initialise everything at the start, but that's just a preference thing I guess. Also, as previously suggested you should use %nick for readability purposes. You may one day forget what $2 is in the context of a whois reply, but you'll always know what %nick means  ; 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 1 5 .disable #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, %nick = $2, %chans = $hget(idle_whois,$cid $+ $2 $+ .chans), %idles = $hget(idle_whois,$cid $+ $2 $+ .idle), $&
%idle = $gettok(%idles,1,32), %signon = $gettok(%idles,2,32), %i = 1, %cidles, %rchans = %chans, %pchan, %chan, %cidles, %cidle, %chanidles
if ($query(%nick)) { %cidles = $query(%nick).idle $+ :Query }
if ($chat(%nick)) { %cidles = %cidles $chat(%nick).idle $+ :Chat }
WHILE $gettok(%chans,%i,32) {
%pchan = $v1
%chan = $regsubex(%pchan,/^[^ $chantypes ]*/x,)
%cidle = $nick(%chan,%nick).idle
if (%cidle != $null) {
%cidles = %cidles %cidle $+ : $+ %pchan
%rchans = $remtok(%rchans,%pchan,1,32)
}
inc %i
}
%cidles = $sorttok(%cidles,32,n)
%i = 1
%chanidles =
WHILE $gettok(%cidles,%i,32) {
%pchan = $gettok($v1,2,58)
%cidle = $gettok($v1,1,58)
%chanidles = %chanidles %pchan $+ [[ $+ $dur(%cidle,%PRECISION) $+ ]]
inc %i
}
echo -atic whois * %nick signed on $dur($calc($ctime - %signon),2) $+ , idle $dur(%idle,2) $+ , %chanidles %rchans
hdel -w idle_whois $cid $+ %nick $+ .*
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 $remove($gettok($regsubex($duration($1),/(\d+\w)\S*/g,\t),1- $+ $2,32),$chr(32)) } ; by Raccoon
|
|
|
|
Joined: Feb 2025
Posts: 2
Bowl of petunias
|
Bowl of petunias
Joined: Feb 2025
Posts: 2 |
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* Raccoon signed on 2w1d, idle 1s, @#raccoon[1s] Query[1m5s] Chat[1m12s] @#irchelp[2h9m] +#politics[15h6m] #efnet[2w1d] http://www.hawkee.com/snippet/10010/; 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 1 5 .disable #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 $remove($gettok($regsubex($duration($1),/(\d+\w)\S*/g,\t),1- $+ $2,32),$chr(32)) } ; by Raccoon If it's just idle without having to have a whois script, is that possible?
|
|
|
|
|