...but you corrected neither the weird if-elseif, nor the third timer... frown
This should do it, I also added some quick echo feedback.

Code:
on &*:INPUT:#: {
  if ($1 == !tb) {
    if ($me isop $chan) {
      if ($2) {
        if (($v1 ison $chan) && ($v1 != $me)) {
          if ($3 isnum 1-) {
            ban -ku $+ $int($3) $chan $2 $4-
            .timer 1 1 msg $chan 5(o_O)7 $2 05has been temporarily 7banned 5from07 $chan 05for07 $duration($3) $iif(($4),05(Reason:07 $4- $+ 5)) $+ 5.
            .timer 1 2 notice $2 5You've been temporarily 7banned 5from7 $chan 5for7 $duration($3) $iif(($4),05(Reason:07 $4- $+ 5)) 7(>_<)5.
            .timer 1 $3 notice $2 5You've been 7unbanned 5from7 $chan (^_^)5.
          }
          else { echo -ac info TempBan: No/Invalid duration given. Syntax: !tb <nick> <duration in s> [reason] }
        }
        else { echo -ac info TempBan: No such user $qt($2) on chan $chan $+ . Syntax: !tb <nick> <duration in s> [reason]  }
      }
      else { echo -ac info TempBan: No parameters given. Syntax: !tb <nick> <duration ins s> [reason] }
    }
    else { echo -ac info TempBan: You're not opped in $chan $+ . }
    halt
  }
}