I suspect 'isreg' worked, but it worked too well. When you're inside the ON JOIN event, all nicks are by definition regular nicks until a later event when some of them are given voice, ops, etc. If you want to exclude eventual ops, you either need to build a list of address masks to exclude, or use a timer that waits a few seconds to give the non-regulars time to be given their status. If using a timer, you'd probably create an alias to be executed a few seconds after the join and pass the nick like: /timer 1 5 aliasname $unsafe($nick) $unsafe($chan)