I think the Clojure community manages to do pretty well in discouraging macros except as thin sugar over functionality avaible through normal channels. It also has some very complicated macros that give it a type system and lightweight threading and channels that would have have had to be implemented by the language designers in other languages.
I'm willing to run into the occasional macro abuse to get goodies like core.async and core.typed.
I'm willing to run into the occasional macro abuse to get goodies like core.async and core.typed.