Start with what is true
No Discord bot can read direct messages between two members. This is not a limitation ScoutBot is working around, or a feature behind a higher tier. The API provides no mechanism for it, a bot cannot see friend requests or the friend graph, and AutoMod does not apply to DMs at all. There is no verification level and no partner programme that changes any of that.
So treat any product advertising DM scanning with suspicion. The only tooling that crosses the boundary is a selfbot or a modified client, both of which violate Discord’s terms — and the account that gets banned for running one is the member’s, not the vendor’s.
Stopping the scrape is not the answer either
A common instinct is to hide the member list. It does not help. Anyone in your server can see who else is in it, that is what a server is, and the effort required to collect names is trivial. Building defences around preventing the scrape spends real effort on a chokepoint that does not close.
What actually works
Two halves, and you need both.
In the server: make the impersonating account unusable before it approaches anyone. That is catching the name or avatar change at the moment it happens, and kicking or banning on a match rather than only alerting.
With your members: give them a rule simple enough to remember under pressure. The one that works is staff never DM you first — because it needs no judgement about whether a particular message looks legitimate.
Settings worth teaching
- Turn off direct messages from server members, under Privacy & Safety. This is the single highest-value change a member can make.
- Set who can send friend requests to friends-of-friends, or off. A friend request needs no mutual server, which is why it is a common route.
- Verify anyone claiming to be staff in a public channel, where other people can see the question.
How ScoutBot helps with the member half
ScoutBot can post a recurring safety reminder to a channel you choose, at a frequency you set, optionally mentioning a role. It can also send each new member a single DM when they join — and that message says plainly that it is the only DM ScoutBot will ever send, which is what makes every later DM claiming to be from staff a visible contradiction.
That is the entire DM surface, and it is deliberate. One message, once, on join. Both are free on every server.
An honest summary
ScoutBot cannot stop a DM. Nothing can. What it can do is make the account that would send it unusable in your server, and make sure your members have already been told the rule that makes the message fail. Anyone promising more than that is describing something the Discord API does not offer.