Did you know that the letter you place inside the [] bracket will trigger on the letter c, o, and n in regex? You should do something like this:
on $*:TEXT:/^[!@](con)?(grat[sz]|gratulations?\b)/iS:#: {
This will trigger on [!@]grats or [!@]gratz or or [!@]congrats or [!@]congratz or [!@]congraulation or [!@]congratulations
I recommend the add of /i and /S switch.