Cassius, msg $active will not always work because you have DCC chats that requery =$nick for instance. Also why even bother to check if the string is listed, and not just go through with the replace. Im sure the $replace has a condition in it already to check, here your just wasting that .0000001 second of resource. >:D
on 1:INPUT:*: {
if ($left($1, 1) !isin $+(/,$readini($mircini, text,commandchar))) {
/say $replace($1-, %happy, %happyc)
/halt
}
}
Say will work just fine covering all possible windows.