You regex trigger can be simplified to:
on $*:text:/^([!@]dedi)/Si:#: {
since that'll catch dedi or dedicate. I don't see the need for grouping...
Then again, if you only want to match for (!@)dedi and (!@)dedicate exactly, you can do:
on $*:text:/^[!@](\w+)/Si:#: {
if ($regml(1) == dedi) || ($regml(1) == dedicate) { ...
}
Or
on $*:text:/^[!@](\w+)/Si:#: {
if ($istok(dedi dedicate,$regml(1),32)) { ...