What if this person says sorry with a smiley?:
<nick> Sorry :-(
by adding a * after the word sorry, this someone can say more than just sorry, and it still works
on *:TEXT:sorry*:#:{
if ($nick == %warned.1) {
TIMERwarner off
.msg $chan 4 %warned.1 2says they're sorry for3 %reason
.notice %warned.1 2 You were warned because you were3 %reason 2, dont do it again...
.notice %warned.1 2Next time there will be no warning... Just a KB!
unset %warned.1
}
}
or by adding a * in front, they can say:
<nick> I am so very sorry :-(
on *:TEXT:*sorry*:#:{
if ($nick == %warned.1) {
TIMERwarner off
.msg $chan 4 %warned.1 2says they're sorry for3 %reason
.notice %warned.1 2 You were warned because you were3 %reason 2, dont do it again...
.notice %warned.1 2Next time there will be no warning... Just a KB!
unset %warned.1
}
}
But on the other hand, then they can also say:
<nick> I'm not going to say sorry! :-P
..so this have to be up to you to figure out how to get this right

Maybe add a line like:
if (sorry isin $1-) && (not isin $1-) { kick $chan %warned.1 Appology not accepted! | halt }