set cryptkey "abc123"

proc pubDecrypt {nick uhost hand chan text} {
   set text [decrypt $::cryptkey [lindex [split $text] 1]]
   switch -exact -- [lindex $text 0] {
      !test {pubTest $nick $uhost $hand $chan $text}
      !help {pubHelp $nick $uhost $hand $chan $text}
      !rules {pubRules $nick $uhost $hand $chan $text}
      default {return}
   }
}
bind pub - +OK pubDecrypt

Hope that makes sense...
just list your binds as cases in the switch body
then put the proc that they were originally bound to inside that case body
after that, you can remove all the regular binds to those procs as they are not going to work
since the text in the channel is encrypted and will not match the binds