Well it might be the long way around it, but having a timer with an alias could accomplish this.. Ex:

Code:
/ban <params>
.timer [ $+ [ <nick> ] $+ ] . [ $+ [ <chan ] ] 1 <delay> /unbanUsr <chan> <nick|mask>


then have the timer point to something

Code:
alias unbanUsr {
  if ($2 isban $1) /mode $1 -b $2
}


its a long way around it, but its possible. I myself had to rewrite a few mode changes for a revenge script i had made. The problem was just after i'd have been kicked i'd get several messages saying "you are not a operator on this channel", "no external messages", etc. Iw ould have to wait for them to all clear before i could rejoin and clear the problem user.

Well, my script worked by like taking the long way around.. Maybe this can help you. >:D