Originally Posted by Simo
ive tested this and it all works for me

Note: ive used a stacked nicks in the on op event if your networks allows stacked kicks and modes kick #channel nick,nick,nick,nick,nick,nick
not sure on what network you are gonna use this as some networks allow stacked kicks.

Code
..................

alias badnick_alias {
  var %chan $1 , %nick $2
  if (%nick !ison %chan || $nick( %chan , %nick ,@&~%)) { halt }
  if ($len( %nick ) < 3 || ($calc($regex(%nick,/[A-Z]/g) * 100 / $len(%nick)) > 30)) { kick %chan %nick please change your nick thanks you.... }  
}

.....................

I looks really great and (of course) perfectly work.
Can I change badnick_alias with this:

Code

alias badnick_alias {
  var %chan $1 , %nick $2
if (%nick !ison %chan || $nick( %chan , %nick ,@&~%)) { halt }
  if ($len( %nick ) < 3 || ($calc($regex(%nick,/[A-Z]/g) * 100 / $len(%nick)) > 30))  {
    notice %nick FIRST WARN
    .timer 1 30 badnick_alias %chan %nick 30
    .timer 1 45 badnick_alias %chan %nick 45
    .timer 1 60 badnick_alias %chan %nick 60
    return
  }
  elseif ($3 == 30) notice %nick SECOND WARN
  elseif ($3 == 45) notice %nick LAST WARN
  elseif ($3 == 60) kick %chan %nick KICK

}

So to give warning to user and kick after 60 sec?