Skip to content

What the bot can see โ€‹

"A bot is scanning my messages" is a fair thing to be uncomfortable with. So here is the mechanical answer, without marketing language. Everything on this page is verifiable in the source โ€” links to the exact files are at the bottom.

It is a filter, not a reader โ€‹

The distinction matters more than it sounds.

A reader takes in your message, understands it, forms an impression, and keeps that impression. That is what people picture when they imagine a bot watching them, and it is reasonable to object to.

A filter is a sieve. Text goes in one side. It is checked against a list of known scam structures. If nothing matches, nothing comes out the other side and nothing is written down โ€” there is no record the message was ever checked.

BonkerBot is the second thing. It is closer to your email spam filter than to anything that could form an opinion about you. It has no memory of messages that did not match, no profile of your interests, and no notion of what you talk about. What it holds is a reputation number and a list of matches.

What actually happens to a message โ€‹

  1. A message is posted in a channel the server has BonkerBot watching.
  2. It is checked, in memory, against the pattern library โ€” scam structures like "urgency plus an off-platform link", wallet address formats, known-bad domains, impersonation shapes. Attached images are checked separately, below.
  3. Every check returns a bounded number. Not one of them is allowed to be decisive alone; crossing an action threshold always requires a second, independent signal agreeing.
  4. If the total lands below the flag threshold, the message is dropped. It is not stored, not logged, not counted, not attached to your account. The function simply returns and the text goes out of memory.
  5. Only if it clears the threshold is a snapshot taken, a report filed, and your moderators shown the message so a human can confirm or dismiss it.

Step 4 is the one worth re-reading. The overwhelming majority of messages BonkerBot checks leave no trace of any kind, because storage happens after the threshold, not before it.

What it cannot see โ€‹

  • Your DMs with other people. Not a policy โ€” a hard limit. Discord's API does not expose private conversations to bots at all. No bot on the platform can read them, including this one. The only DMs BonkerBot sees are ones sent directly to BonkerBot.
  • Voice. No audio, ever.
  • Any channel your server excludes. Admins can allowlist channels, and allowlisted channels are skipped before any check runs.
  • Deleted or edited history. It sees messages as they are posted, nothing retroactive.
  • Who you are. No usernames, no email, no IP, no member lists, no server names are stored. The identifier is your Discord user ID โ€” the same public number anyone can copy out of your profile.

About images โ€‹

The common objection is "I don't want a bot looking at my images." Worth separating two things:

Discord already processes your images. They are uploaded to Discord's CDN, scanned, thumbnailed and stored by the platform. That happens with or without any bot installed.

What Discord's built-in AutoMod does not do is read the text inside an image. This is exactly why screenshot scams work so well: put "free nitro, claim here, steam-community-gift.ru" in a PNG and every keyword filter on the platform goes blind. That single gap is responsible for an enormous share of the scams that reach people.

So BonkerBot runs OCR โ€” locally, on our own hardware โ€” to pull the text back out of the image and check that text the same way it checks a message. It also stores a perceptual hash: a short fingerprint that lets a re-cropped, re-compressed copy of a known scam image be recognised again. Confirmed scam images are kept as that fingerprint. The image itself is not kept.

Where the processing happens โ€‹

On our own servers. Message content is not sent to OpenAI, Google, Anthropic, or any third-party API โ€” there is no such call anywhere in the pipeline. OCR (Tesseract), image hashing, the pattern library and the optional similarity layer all run locally on the machine the bot runs on.

If you self-host, "our servers" becomes your server, and nothing leaves your infrastructure at all.

The similarity layer, stated plainly โ€‹

Most detection is direct pattern matching: structures, formats, domains, primitives. Above that sits an optional layer that compares a message against scams that have already been confirmed, mathematically, by similarity โ€” so a scam reworded to dodge the literal pattern still resembles its own family.

Two honest notes about it, since this is the part people ask about:

  • It is off by default and a server admin has to switch it on.
  • It is capped below the action threshold on purpose. In the scoring config it contributes at most 0.45; an automated action requires 0.7. That is not a guideline, it is arithmetic โ€” the similarity layer cannot punish anyone by itself, ever. It can only agree with evidence that already exists.

It runs on our hardware from a local model file. Nothing is transmitted.

Why the pattern list itself is private โ€‹

The code that decides how the bot treats people is open, and should be. The list of what it looks for is not, and won't be.

The reason is narrow: a published detection list is a bypass checklist. Scammers iterate faster than anyone else on the platform, and handing them the exact rule set converts a detection tool into a free QA suite for their next campaign. Every anti-fraud system on the internet works this way, for the same reason.

The tradeoff is real and we'll say it out loud: it means you can't audit our scam list. What you can audit is every line that governs consequences โ€” the scoring, the thresholds, the trust score maths, the appeals, the undo paths, the retention. See How the project is split.

What we're doing this for โ€‹

Orange Cat Associated has no other motive here. There is no data product, no resale, no ad targeting, no model being trained on your conversations for someone else's benefit. A bot is a tool that does one job, and this one's job is to make Discord less profitable for people who join servers to exploit the members in them.

If you want the enforceable version of all of the above rather than the plain one, that's the privacy policy. Any user can export or delete everything held under their ID with /privacy at any time.

Read it yourself โ€‹

The bot is open source; the scam pattern library is not. BonkerBot is not affiliated with Discord Inc. โ€” Terms ยท Privacy