You can do something as such:
alias cmd {
var %r /((de)?(protect|voice))/iS, %2 $iif($$2 ison #,$v1)
if $regex($$1-,%r) {
$iif($replace($regml(1),protect,+ao,voice,+v),mode # $v1 %2 %2)
$iif($replace($regml(1),de,-,protect,ao,voice,v),mode # $v1 %2 %2)
}
}
alias all { mode # +qaohv $str($iif($$1 ison #,$v1) $chr(32),5) }
alias deall { mode # -qaohv $str($iif($$1 ison #,$v1) $chr(32),5) }
For protect, deprotect, voice, devoice, do /cmd NICKHERE
For the all and deall, you do the usual.