Well, I reckon if you want to exclude the user modes ~ and &, you should do:
while ($nick(#,$0,a,~&hvr))
This is supposed to match for @ only.