on *:START: { unset $+(%,ircv3.*) }
on *:EXIT: { unset $+(%,ircv3.*) }
on *:DISCONNECT: { unset $+(%,ircv3,.,$cid) }
raw CAP:*: {
var %Cap = $var($+(%,ircv3,.,$cid),1).value , %Type = $2
tokenize 32 $3-
if (%Type = LS) { }
elseif (%Type = ACK || %Type = NAK) {
while ($0) {
if (-* iswm $1) { var %Cap = $remtok(%Cap,$mid($1,2),1,32) }
else if (%Type = NAK) { var %Cap = $remtok(%Cap,$1,1,32) }
else { var %Cap = $addtok(%Cap,$1,32) }
tokenize 32 $2-
}
set $+(%,ircv3.,$cid) %Cap
}
}
on *:PARSELINE:in:*:{
var %pl = $parseline
if ($parseutf) { var %pl = $utfdecode(%pl) }
; Replace time= tag with our own localtime if we do not have server-time CAP
if (!$istok($var($+(%,ircv3,.,$cid),1).value,server-time,32)) { var %pl = $regsubex(%pl,/(^@(?:[^ ]+)?time=)([^ \x3b]+)/,\1 $+ $replace($asctime($gmt,yyyy-mm-dd!HH:nn:ss),!,T) $+ Z) }
.parseline -itu0 %pl
return
}