well this wont do it on only one letter, but go ahead and test this
It checks if its a letter (not 0-9 or punctuation) and then checks if it is upper case or not
if it is not a letter (it IS 0-9 or punctuation) it decreases a var so that var can be used to get a % of letters that are caps and not include the nonalpha characters.
on *:text:*:#:{
var %text = $1-
var %count = $len(%text)
var %onlyletters = $len(%text)
var %i = 1, %place, %upper, %lower
while (%i <= %count) {
var %place = $mid(%text,%i,1)
if (%place isalpha) {
if (%place isupper) { inc %upper }
}
if (%place !isalpha) { dec %onlyletters }
inc %i
}
var %check = $calc((%upper / %onlyletters) * 100)
if ( %check > 30) { echo $chan $nick might be talking in all caps -= From %count Characters: %upper of %onlyletters Letters are Upper Case =- }
}
the
if ( %check > 30) is what you would need to change to set what you think would be the right value.
but 30% caps seems high to me in Normal conversation.