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..
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>
alias _safescid {
if (%safescid.commands) $v1
}
alias safescid {
set %safescid.commands $$2-
scid $1 _safescid
unset %safescid.commands
}
/safescid <cid> <commands>
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.