EmailBot allows you to verify that your Discord server members have an email address with a specific domain.
Discord server: https://discord.gg/MfFMxu9
After inviting the bot to your server, a domain must be added using .dominadd domain
. .vstatus
is the help command:
User commands:
.verify -> Sends a DM to the user to verify their email
.vstatus -> This help message
Admin commands:
- A domain must be added before users can be verified.
- Use .rolechange instead of server settings to change the name of the verified role.
.enableonjoin -> Enables verifying users on join
.disableonjoin -> Disables verifying users on join
.domainadd domain -> Adds an email domain
.domainremove domain -> Removes an email domain
.rolechange role -> Changes the name of the verified role
Domains:
Verify when a user joins? (default=False): False
Verified role (default=Verified): Verified
Let's say you want a Discord server just for people who have a @randomuniversity.edu email address. Add this bot to your server and when someone joins, they will get a DM asking for their @randomuniversity.edu email address. The bot then emails them a verification code. If they reply with the correct code, they get the "Verified" role.
Install the dependencies:
pip install -r requirements.txt
Before running it make sure these environment variables are set. You will need a Sendgrid and Discord account (both are free). Optionally consider making a Mailgun account, since this bot uses Mailgun when Sendgrid fails to send an email:
export SENDGRID_API_KEY='YOUR_SENDGRID_API_KEY'
export SENDGRID_EMAIL='YOUR_SENDGRID_EMAIL'
export DISCORD_TOKEN='YOUR_DISCORD_TOKEN'
export MAILGUN_API_KEY='YOUR_MAILGUN_API_KEY'
export MAILGUN_DOMAIN='YOUR_MAILGUN_DOMAIN'
Run the bot with:
python bot.py
- Separate bot commands/events into cogs and put sqlite commands in a separate file
- Make the flask server and scheduled sqlite backups optional
- Allow roles with spaces to be added
- Make the feature that allows users who leave to retain their Verified role when they join back, optional for the server admin
- Add a
.unverify member
command - Use Role.id instead of Role.name
EmailBot is licensed under GNU GPL v3.