I see that you have a couple reply's, but I went ahead and took my own stab at it as well. You can specify * to mass op/deop/voice/devoice or supply a specific user to op/deop/voice/devoice.
Code:
on *:TEXT:.deop *:#ChannelName:{
  if ($$2 == $chr(42)) {
    set %m 1
    set %mt $nick($chan,0)
    while (%m <= %mt) {
      if ($nick($chan,%m) != $me) && ($nick($chan,%m) isop $chan) .mode $chan -o $nick($chan,%m)
      inc %m 1
    }
    unset %m
    unset %mt
  }
  else { mode $chan -o $$2 }
}
on *:TEXT:.op *:#ChannelName:{
  if ($$2 == $chr(42)) {
    set %m 1
    set %mt $nick($chan,0)
    while (%m <= %mt) {
      if ($nick($chan,%m) != $me) && ($nick($chan,%m) !isop $chan) .mode $chan +o $nick($chan,%m)
      inc %m 1
    }
    unset %m
    unset %mt
  }
  else { mode $chan +o $$2 }
}
on *:TEXT:.devoice *:#ChannelName:{
  if ($$2 == $chr(42)) {
    set %m 1
    set %mt $nick($chan,0)
    while (%m <= %mt) {
      if ($nick($chan,%m) != $me) && ($nick($chan,%m) isvoice $chan) .mode $chan -v $nick($chan,%m)
      inc %m 1
    }
    unset %m
    unset %mt
  }
  else { mode $chan -v $$2 }
}
on *:TEXT:.voice *:#ChannelName:{
  if ($$2 == $chr(42)) {
    set %m 1
    set %mt $nick($chan,0)
    while (%m <= %mt) {
      if ($nick($chan,%m) != $me) && ($nick($chan,%m) !isvoice $chan) .mode $chan +v $nick($chan,%m)
      inc %m 1
    }
    unset %m
    unset %mt
  }
  else { mode $chan +v $$2 }
}

The usage. ( .deop/.op/.voice/devoice <* or specific user> )
Just change the #ChannelName to the name of your Channel, and you're set. But you may want to add a user level, or a check to see if you're the one submiting the request, so that not everyone can abuse the bot.