alias unregistered {
if ($me ison #$1) {
if (%unregistered.chan) { echo -a Sorry, I'm still looking up the nicks of %unregistered.chan | return }
set %unregistered.chan #$1
; create a hash table storing all nicks
if (!$hget(unregistered)) { hmake unregistered 50 }
var %nr = 1
while ($nick(#$1,%nr)) { hadd unregistered $v1 | inc %nr }
; create / clear output window
var %w = $+(@,unregistered,$chr(160),#$1)
$iif(($window(%w)),clear %w,window -lsCk0z %w -1 -1 300 500)
aline %w $str($chr(160),3) $+ Looking up: nick 001 of $base($hget(unregistered,0).item,10,10,3) ...
; start masswhois
.enable #unregistered
unregistered.whois #$1
}
else { echo -a Syntax: /unregistered <channel>. You need to be on that channel. }
}
alias -l unregistered.whois {
; whois next nick...until finished
if (($me ison $1) && ($hget(unregistered,1).item)) { whois $v1 }
else {
var %w = $+(@,unregistered,$chr(160),$1)
rline %w 1 $str($chr(160),3) $+ $iif(($me ison $1),Scan finished. $&
$iif(($line(%w,2)),They did not register:,All nicks on $1 registered.),Scan aborted.)
hfree unregistered
.disable #unregistered
unset %unregistered.*
}
}
#unregistered off
raw *:*:{
if ($hget(unregistered,$2).item) {
; nick has registered: store that nick
if ($numeric == 307) {
set %unregistered.regnick $2
haltdef
}
; end of whois for that nick or no such nick
elseif ($istok(318 401,$numeric,32)) {
var %w = $+(@,unregistered,$chr(160),%unregistered.chan)
; nick has not registered: add the nick to the window
if (($numeric == 318) && (%unregistered.regnick != $2)) { aline %w $2 }
; update count
rline %w 1 $str($chr(160),3) $+ Looking up: nick $&
$base($calc($gettok($line(%w,1),6,32) - $hget(unregistered,0).item +1),10,10,3) of $gettok($line(%w,1),6,32) ...
; proceed with next nick and additional 200ms delay
hdel unregistered $2
.timerunregistered -m 1 200 unregistered.whois %unregistered.chan
haltdef
}
; halt the other whois lines as well
elseif ($int($calc($numeric / 100)) == 3) { haltdef }
}
}
#unregistered end