we did at one point i think
but that's ok
ditto has a few shortcomings, let's discuss them:
1: ditto can't transform into an already-transformed ditto.
2: ditto can't transform into a zoroark that still is in its illusion form.
3: ditto can't transform into something behind a substitute
most of those are situational, but are still quite useful, especially #3.
depending on item choice, ditto might be ill-suited to muscle through defensive boosters with limited PP. unique situations might also arise which would give you an advantage i.e. ditto comes in to copy a guts bulk-up roobushin and yours is poisoned, giving you the offensive edge and letting you recover with drain punch. Sub+3 attack sets will be popular over setup, as being able to throw out two attacks against that specific opponent is exactly the same as throwing out a +2 attack as far as damage is concerned. calm minders/bulk up/stallers will all work effectively to beat a ditto, and sub+setup is still viable to block boosts from being stolen. Not carrying moves to hit yourself super effective is also an option, like a dd gyarados running dd/taunt/waterfall/ice fang to both give it more setup opportunities and to also weaken an opposing ditto to the point where priority can finish it off. forcing ditto to spend PP via pressure/protect might also be a nice last-ditch option. items like balloon can give you a situational advantage where ditto can't otherwise prey on your weaknesses, and red card might also be a nice way to get an out of control ditto off the field. luring a ditto in with a pure stat booster might also be a good option, but relying on the fact that ditto can only revenge you if you're choiced means you can play around it. Consider SDChomp paired with Skarmory, or SDLucario paired with Scarf Shandera, or Blaziken paired with Gyarados.