Code:
on !*:text:*:#:{
  if ($nick isop #) { return }
  if ( $len($1-) >= 10 ) {
    if ( $calc($regex($1-,/[A-Z]/g) / $regex($1-,/[A-Z]/gi) * 100) >= 70 ) { 
    
      ; check if user is not warned yet
      if !$istok(%caps.warned,$nick,32) {

        ; warning user      
        msg $chan $nick -> stop typing in caps! [warning] 
        
        ; add user to %caps.warned, so we can check it later
        set -e %caps.warned $addtok(%caps.warned,$nick,32)
        
        ; set timer to remove user from %caps.warned after 300s
        .timer 1 300 remove.warned $nick
      }
      else {
        ; so user is already warned.. 
        ; place your timeout command here
      }
    }
  }
}

alias -l remove.warned {
  set -e %caps.warned $remtok(%caps.warned,$1,1,32)
}