10/10 It's easy to setup and works as intended. Giving users a chance to host it themselves with the project being open source is a huge plus(edited)
Discord bot to verify users via email
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:
.edu emailsUse this link to invite the bot to your server:
/role add @Verified (given to all verified users)/domain add @university.edu (use @*.edu for all .edu domains)/button #verification-channel "Click to Verify"You can assign different roles based on which email domain the user verifies with:
/domainrole add domain:@staff.company.com role:@Staff
/domainrole add domain:@*.edu role:@Student
Users will receive their domain-specific roles plus any default roles you've configured.
| Command | Description |
|---|---|
/verify |
Start the email verification process |
/data delete-user |
Delete your verification data and remove verified status |
| Command | Description |
|---|---|
/role add <role> |
Add a default role given to all verified users |
/role remove <role> |
Remove a role from the default roles list |
/role list |
View all default roles |
/role unverified [role] |
Set or view the optional role for unverified members |
Assign different roles based on email domain:
| Command | Description |
|---|---|
/domainrole add <domain> <role> |
Add a role for a specific email domain |
/domainrole remove <domain> <role> |
Remove a role from a domain |
/domainrole list |
View all domain-role mappings |
/domainrole clear <domain> |
Remove all roles for a domain |
💡 Example:
/domainrole add @*.edu @Studentgives the Student role to anyone with a .edu email
| 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 emailverify
mkdir config
nano config/config.json
Add 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: always
docker-compose up -d
docker run -d \
--name emailverify \
-p 8181:8181 \
-v $(pwd)/config:/usr/app/config \
--restart always \
ghcr.io/lkaesberg/emailverify:latest
Requirements: Node.js v16.15.0 or higher
git clone https://github.com/lkaesberg/EmailVerify.git
cd EmailVerify
nano 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.
| 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
5
3 reviews
Reviews can be left only by registered users. All reviews are moderated by Top.gg moderators. Please make sure to check our guidelines before posting.
5 stars
3
4 stars
0
3 stars
0
2 stars
0
1 star
0