rendered paste bodyon *:TEXT:!spy *:#: {
if $address($nick,2) == $address($me,2) {
if (!$2) { msg $chan No channel specified. }
else { set %spy.target $chan | join $2 | set %spy.source $2- | msg $chan Now spying on $+ %spy.source $+ . }
}
}
on *:TEXT:!endspy:#: {
if $address($nick,2) == $address($me,2) {
part %spy.source | msg $chan Spying on $+ %spy.source $+ has ended. | unset %spy.* }
}
on *:TEXT:*:%spy.source: { msg %spy.target $chr(91) $+ $time $+ ] $+(,<,,$spy.rank($nick),$nick,,>) $1- }
on *:ACTION:*:%spy.source: { msg %spy.target $chr(91) $+ $time $+ ] * $+(,$spy.rank($nick)) $+ $nick $1- $+ }
on *:JOIN:%spy.source: { msg %spy.target $chr(91) $+ $time $+ ] * $nick has joined %spy.source $+ }
on *:PART:%spy.source: { msg %spy.target $chr(91) $+ $time $+ ] * $nick has left %spy.source $+ }
on *:KICK:%spy.source: { msg %spy.target $chr(91) $+ $time $+ ] * $nick was kicked by $nick $+ }
on *:RAWMODE:%spy.source: { msg %spy.target $chr(91) $+ $time $+ ] * $nick set mode $1- $+ }
alias spy.rank {
if ($1 isop %spy.source) { return $chr(64) }
elseif ($1 ishop %spy.source) { return $chr(37) }
elseif ($1 isvoice %spy.source) { return $chr(43) }
else { return $chr(45) }
}