A powerful Email Verification Bot for Discord servers
This bot verifies that a Discord user owns an email address with a specific domain (e.g., verify [email protected] emails). This is useful for servers that need to restrict access to verified members only, such as:
- University/College servers - Verify students with
.eduemails - Company servers - Verify employees with corporate emails
- Organization servers - Verify members with organization emails
- User clicks a verification button
- Bot sends a DM asking for their email address
- A verification code is sent to the email
- User enters the code to receive the verified role
Use this link to invite the bot to your server:
- Invite the bot using the link above
- Set the verified role:
/role verified @YourVerifiedRole - Add allowed domains:
/domain add @university.edu(use@*.edufor all .edu domains) - Create a verification button:
/button #verification-channel "Click to Verify" - Done! Users can now verify themselves
| Command | Description |
|---|---|
/verify |
Start the email verification process |
/data delete-user |
Delete your verification data and remove verified status |
| Command | Description |
|---|---|
/role verified [role] |
Set or view the role given after verification |
/role unverified [role] |
Set or view the optional role for unverified members |
| Command | Description |
|---|---|
/domain add <domains> |
Add allowed email domains (supports * wildcard) |
/domain remove <domains> |
Remove allowed domains |
/domain list |
View all allowed domains |
/domain clear |
Remove all allowed domains |
๐ก Wildcard Example: Use
@*.eduto allow any.eduemail address
| Command | Description |
|---|---|
/blacklist add <patterns> |
Block email patterns (supports * wildcard) |
/blacklist remove <patterns> |
Unblock patterns |
/blacklist list |
View all blacklisted entries |
/blacklist clear |
Remove all blacklist entries |
๐ก Wildcard Examples:
*@tempmail.*blocks all tempmail domains,*spam*blocks emails containing "spam"
| Command | Description |
|---|---|
/settings language <lang> |
Change the bot's language |
/settings log-channel [channel] |
Set or disable the verification log channel |
/settings verify-message [message] |
Set or reset custom message in verification emails |
/settings auto-verify <enable> |
Auto-prompt new members to verify on join |
/settings auto-unverified <enable> |
Auto-assign unverified role to new members |
| Command | Description |
|---|---|
/button <channel> <buttontext> |
Create a verification button embed in a channel |
/manualverify <user> <email> |
Manually verify a user without email confirmation |
/set_error_notify |
Configure where error notifications are sent |
| Command | Description |
|---|---|
/status |
View bot configuration, statistics, and check for issues |
/help |
Show setup instructions and command overview |
| Command | Description |
|---|---|
/data delete-user |
Delete your personal verification data |
/data delete-server |
Delete all server data and remove the bot |
โ ๏ธ Note: Most commands require administrator permissions
The EmailBot role must be higher in the role hierarchy than the verified and unverified roles, otherwise you'll get a Can't find roles. Please contact the admin! error.
If you want to self-host the bot, you have two options: Docker (recommended) or Manual Installation.
๐ Enjoying the bot? If you find this project useful, please consider buying me a pizza to support ongoing development!
The easiest way to self-host is using Docker with the pre-built image.
mkdir emailverify && cd emailverifymkdir config
nano config/config.jsonAdd your configuration:
{
"token": "<Discord Bot Token>",
"clientId": "<Discord Bot Client ID>",
"email": "<Email Address>",
"username": "<Mail Server Username>",
"password": "<Email Password>",
"smtpHost": "<SMTP Server>",
"isGoogle": false
}version: '3'
services:
emailverify:
image: ghcr.io/lkaesberg/emailverify:latest
ports:
- 8181:8181
volumes:
- ./config:/usr/app/config
restart: alwaysdocker-compose up -ddocker run -d \
--name emailverify \
-p 8181:8181 \
-v $(pwd)/config:/usr/app/config \
--restart always \
ghcr.io/lkaesberg/emailverify:latestRequirements: Node.js v16.15.0 or higher
git clone https://github.com/lkaesberg/EmailVerify.git
cd EmailVerifynano config/config.json{
"token": "<Discord Bot Token>",
"clientId": "<Discord Bot Client ID>",
"email": "<Email Address>",
"username": "<Mail Server Username>",
"password": "<Email Password>",
"smtpHost": "<SMTP Server>",
"isGoogle": false
}npm install
npm start| Option | Description |
|---|---|
token |
Your Discord Bot Token from the Discord Developer Portal |
clientId |
Your Discord Bot's Client ID |
email |
The email address that will send verification codes |
username |
SMTP server username (usually your email address) |
password |
SMTP server password or App Password |
smtpHost |
Your SMTP server (e.g., smtp.gmail.com) |
isGoogle |
Set to true if using Gmail |
topggToken |
(Optional) Your Top.gg API token |
๐ก Gmail Users: You need to create an App Password and use that instead of your regular password.
Type email in the console to see debugging messages for email errors.
- Lars Kaesberg - GitHub
| Language | Contributor |
|---|---|
| ๐ฌ๐ง English | Lars Kaesberg |
| ๐ฉ๐ช German | Lars Kaesberg |
| ๐ช๐ธ Spanish | gus2131 |
| ๐ต๐ฑ Polish | kploskonka |
| ๐ฎ๐ฑ Hebrew | Norma1Name |
| ๐ฐ๐ท Korean | iplayagain |
| ๐ซ๐ท French | Charles Van |
| ๐น๐ท Turkish | EmreSoftware |
Create an issue with your translation file using the English template as a reference.
If you're self-hosting this bot and find it useful, please consider supporting the development! Your contribution helps keep the project maintained and improved.
Made with โค๏ธ by Lars Kaesberg

