Discord verification bots
A verification bot keeps new joins in a single channel until they show they are a person, which shuts out most raid and spam accounts before they can post.

How a verification bot works
The setup is mostly permissions, not code. You take View Channels away from @everyone on every channel except #verify, then create a Verified role that can see the rest of the server. The bot posts a message in #verify, and when a member passes the check it gives them the Verified role. Until then the server looks like a single channel to them.
The check can be one button, which stops simple spam accounts and join floods, or a captcha: a short code shown in a reply only the member can see, which they type into a pop-up form. A captcha slows down scripted raids that are able to click buttons. Many bots also look at account age and send accounts created in the last few days to a stricter check or flag them for staff.
The bot needs the Server Members intent to see joins, check account age the moment someone arrives and kick members who never verify. Its role must sit above the Verified role in Server Settings → Roles. Raise Discord's own verification level too; requiring a verified email costs nothing and works alongside the bot. You describe the check, and Discord Bot Creator builds and hosts the bot.
What it usually does
- Posts a verify button or captcha in a single entry channel
- Gives the Verified role when a member passes
- Sends very new accounts to a stricter check or flags them for staff
- Kicks members who have not verified after a set time
- Logs passes and failures to a staff channel
Permissions and intents it needs
Give a bot only what it uses. These are the permissions a typical verification bot asks for in its invite link, and why.
| Permission | Why |
|---|---|
| Manage Roles | Gives the Verified role. The bot's role must sit above it. |
| Kick Members | Removes members who never finish verifying, if you want that. |
| View Channels | Sees #verify and the staff log channel. |
| Send Messages | Posts the verification message and the staff log entries. |
| Embed Links | Shows the verification instructions as an embed. |
Privileged intents
Server Members Intent
Lets the bot see each join, read account age when the member arrives and find members who never verified.
Enable Server Members Intent in Developer Portal → your app → Bot → Privileged Gateway Intents. Message Content is not needed because the check runs on buttons and forms. A bot in 100 or more servers needs Discord's approval for the intent.
Verification bots built here
Real bots made by describing them, running in Discord servers now.
No verification bots are listed yet. Bots appear here once they have been online for three days and joined a server. Yours could be the first.
Describe yours like this
Name the channels, roles and commands you want. The more specific the description, the less you need to change afterwards.
Add verification to my server. New members only see #verify, where a button shows a 5-character code they type into a form; if it's right, give them @Member. Flag accounts younger than 7 days in #staff-alerts, and kick anyone who hasn't verified within 24 hours.
Questions about verification bots
How do I set up verification on a Discord server?
Create a Verified role. Remove View Channels from @everyone on every category except the one holding #verify, and allow it for Verified. Invite the bot, drag its role above Verified, and let it post the check in #verify. Test it with a second account, or use View Server As Role in Server Settings → Roles to see what a new member sees.
Does a verification bot stop raids?
It stops raid accounts from posting, which is most of the damage. Scripted joins land in #verify and cannot reach the rest of the server. A determined raider can still pass a button check, so captchas and account-age rules help, and a command to pause verification gives staff time to clean up. Pair it with Discord's own verification level.
Button or captcha verification: which is better?
A button has the least friction and stops lazy spam accounts and accidental joins. A captcha asks for a typed answer, which takes a real person a few seconds and blocks many scripts that only click. Start with a button, and switch to a captcha, or use it only for new accounts, if spam accounts keep getting through.
Why does my verification bot fail to give the role?
Discord does not let a bot assign a role that sits at or above its own highest role. Open Server Settings → Roles and drag the bot's role above the Verified role, then confirm the bot's role has Manage Roles. If the role is given but members still see nothing, check the channel overwrites for the Verified role.
Other kinds of Discord bots

Describe the verification bot your server needs
Write it in a sentence or two. You see the plan before anything is built, and your first bot runs free for 7 days.