haltdef is different than halt, in that it halts the default message irc displays for that event, yet still permits other scripts to see that the event happened. In my handler, the haltdef could have been the first line of the event handler. haltdef doesn't halt the script, just "halt default display but keep executing event handler"

to hide a join from a specific user, have inside that event handler:

if ($nick == nickname) { haltdef | return }