It took me a long time to learn that if I tell a user "you were being $FOO" where $FOO relates to their intent, they can simply say "no I wasn't" and no one can prove otherwise, making the moderation position a weak one. Mostly they will deny it sincerely because they never had such an intent, at least not consciously. If you do that as a mod, you've just given them a reason to feel entirely in the right, and if you proceed to moderate them anyway, they will feel treated unjustly. This is a way to generate bad blood, make enemies, and lose the high ground.
The reverse strategy is better: describe the effects of someone's posts and explain why they are bad. When inevitably they respond with "but my intent was $BAR", the answer is "I believe you [what else can you say about something only that person could know?], but nonetheless the effects were $BAZ and we have to moderate based on effects. Intent doesn't communicate itself—the burden is on the commenter to disambiguate it." (https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que...)
Often when people get moderated in this way, they respond by writing the comment they originally had in their head, as a defense of what they actually meant. It's often astonishing what a gap there is between the two. Then you can respond that if they had posted that in the first place, it would have been fine, and that while they know what they have in their head while posting, the rest of us have no access to that—it needs to be spelled out explicitly.
Being able to tell someone "if you had posted that in the first place, it would have been fine" is a strong moderation position, because it takes off the table the idea "you're only moderating me because you dislike my opinions", which is otherwise ubiquitous.