Problem with your codes, is the fact that when a person joins a channel, they join it as a regular user. No one ever has ops, half-ops, or voice in a channel at the time of joining.
on *:join:#chan:{
.timer 1 3 greet $nick $chan
}
alias greet {
if $1 isop $2 { .msg $2 Op Greeting }
elseif $1 ishop $2 { .msg $2 Half-Op Greeting }
elseif $1 isvoice $2 { .msg $2 Voice Greeting }
else { .msg $2 Regular user Greeting }
}