The solution is SO simple. Just use the [alias] portion of each command and pass an alias rather than direct commands! You can even wrap them all up into a nice little alias to save yourself some time and effort..

Code:
alias _safetimer { 
  if ($timer(%safetimer.name)) && (* iswm %safetimer.commands) $v2
  if (!$timer(%safetimer.name).reps) unset %safetimer.name %safetimer.commands
}
alias safetimer {
  set %safetimer.name $1
  set %safetimer.commands $$4-
  timer $+ $1 $2-3 _safetimer
}


/safetimer <name> <reps> <delay> <commands>

Code:
alias _safescid {
  if (%safescid.commands) $v1
}
alias safescid {
  set %safescid.commands $$2-
  scid $1 _safescid
  unset %safescid.commands
}


/safescid <cid> <commands>

Code:
alias _safescon {
  if (%safescon.commands) $v1
}
alias safescon {
  set %safescon.commands $$2-
  scon $1 _safescon
  unset %safescon.commands
}


/safescon <scon> <commands>


You can use all of those aliases in place of /timer, /scon and /scid to make them non exploitable.