{"id":34683644,"url":"https://github.com/lkaesberg/emailverify","last_synced_at":"2026-05-26T00:01:23.662Z","repository":{"id":38745840,"uuid":"414281727","full_name":"lkaesberg/EmailVerify","owner":"lkaesberg","description":"Discord bot to verify your email","archived":false,"fork":false,"pushed_at":"2026-05-02T12:06:16.000Z","size":9689,"stargazers_count":56,"open_issues_count":7,"forks_count":28,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-02T14:11:46.171Z","etag":null,"topics":["bot","discord","discord-bot","discord-js","email","nodejs","nodemailer","npm","sqlite3"],"latest_commit_sha":null,"homepage":"https://emailbot.larskaesberg.de","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lkaesberg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.md","funding":".github/FUNDING.yml","license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"lkaesberg","buy_me_a_coffee":"sral12486","open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2021-10-06T16:07:17.000Z","updated_at":"2026-03-10T00:59:16.000Z","dependencies_parsed_at":"2023-02-17T18:10:20.523Z","dependency_job_id":"11f5cbdd-a471-4b69-b80b-dea7cfe73df1","html_url":"https://github.com/lkaesberg/EmailVerify","commit_stats":null,"previous_names":[],"tags_count":34,"template":false,"template_full_name":null,"purl":"pkg:github/lkaesberg/EmailVerify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkaesberg%2FEmailVerify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkaesberg%2FEmailVerify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkaesberg%2FEmailVerify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkaesberg%2FEmailVerify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lkaesberg","download_url":"https://codeload.github.com/lkaesberg/EmailVerify/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkaesberg%2FEmailVerify/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33497930,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-25T14:31:05.219Z","status":"ssl_error","status_checked_at":"2026-05-25T14:31:02.878Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bot","discord","discord-bot","discord-js","email","nodejs","nodemailer","npm","sqlite3"],"created_at":"2025-12-24T21:36:55.077Z","updated_at":"2026-05-26T00:01:23.654Z","avatar_url":"https://github.com/lkaesberg.png","language":"JavaScript","funding_links":["https://github.com/sponsors/lkaesberg","https://buymeacoffee.com/sral12486","https://www.buymeacoffee.com/sral12486","https://img.buymeacoffee.com/button-api/?text=Support%20this%20project!\u0026emoji=%F0%9F%8D%95\u0026slug=sral12486\u0026button_colour=FFDD00\u0026font_colour=000000\u0026font_family=Cookie\u0026outline_colour=000000\u0026coffee_colour=ffffff"],"categories":[],"sub_categories":[],"readme":"\u003c!--\n*** Build using the Best-README-Template.\n--\u003e\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cp align=\"center\"\u003e\n\u003ca\u003e\u003cimg src=\"images/emailbot.png\" alt=\"EmailBot\" width=\"128\" height=\"128\" title=\"EmailBot\"\u003e\u003c/a\u003e\n  \u003ch3 align=\"center\"\u003eDiscord Email Verify\u003c/h3\u003e\n  \u003cp align=\"center\"\u003e\n    A powerful Email Verification Bot for Discord servers\u003cbr /\u003e\n    \u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/lkaesberg/EmailVerify/actions\"\u003e\u003cimg src=\"https://github.com/lkaesberg/EmailVerify/actions/workflows/ci.yml/badge.svg\" alt=\"Build Status\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/lkaesberg/EmailVerify/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/lkaesberg/EmailVerify\" alt=\"License\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/lkaesberg/EmailVerify/network/members\"\u003e\u003cimg src=\"https://img.shields.io/github/forks/lkaesberg/EmailVerify?style=social\" alt=\"GitHub forks\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/lkaesberg/EmailVerify/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/lkaesberg/EmailVerify?style=social\" alt=\"GitHub stars\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n    \u003cp\u003e\n    \u003ca href=\"https://github.com/lkaesberg/EmailBot/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/lkaesberg/EmailBot/issues\"\u003eRequest Feature\u003c/a\u003e\n    \u003c/p\u003e\n    \u003ca href=\"https://emailbot.larskaesberg.de/\"\u003e🌐 Website\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\n---\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails open=\"open\"\u003e\n  \u003csummary\u003e\u003ch2 style=\"display: inline-block\"\u003e📋 Table of Contents\u003c/h2\u003e\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\u003ca href=\"#-about\"\u003eAbout\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#-built-with\"\u003eBuilt With\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#-usage\"\u003eUsage\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#-commands\"\u003eCommands\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#-self-hosting\"\u003eSelf Hosting\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#docker-recommended\"\u003eDocker (Recommended)\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#manual-installation\"\u003eManual Installation\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#-contributors\"\u003eContributors\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#-support-the-project\"\u003eSupport the Project\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n---\n\n## 📖 About\n\nThis bot verifies that a Discord user owns an email address with a specific domain (e.g., verify `name@university.edu` emails). This is useful for servers that need to restrict access to verified members only, such as:\n\n- **University/College servers** - Verify students with `.edu` emails\n- **Company servers** - Verify employees with corporate emails\n- **Organization servers** - Verify members with organization emails\n\n### How it works:\n1. User clicks a verification button\n2. Bot sends a DM asking for their email address\n3. A verification code is sent to the email\n4. User enters the code to receive the verified role\n\n---\n\n## 🚀 Usage\n\n### Invite the Bot\n\nUse this link to invite the bot to your server:\n\n[![Invite Bot](https://img.shields.io/badge/Invite-EmailVerify%20Bot-5865F2?style=for-the-badge\u0026logo=discord\u0026logoColor=white)](https://discord.com/api/oauth2/authorize?client_id=895056197789564969\u0026permissions=268504128\u0026scope=bot%20applications.commands)\n\n### Quick Setup\n\n1. **Invite the bot** using the link above\n2. **Add a default role**: `/role add @Verified` (given to all verified users)\n3. **Add allowed domains**: `/domain add @university.edu` (use `@*.edu` for all .edu domains)\n4. **Create a verification button**: `/button #verification-channel \"Click to Verify\"`\n5. Done! Users can now verify themselves\n\n### Advanced: Domain-Specific Roles\n\nYou can assign different roles based on which email domain the user verifies with:\n\n```\n/domainrole add domain:@staff.company.com role:@Staff\n/domainrole add domain:@*.edu role:@Student\n```\n\nUsers will receive their domain-specific roles **plus** any default roles you've configured.\n\n---\n\n## 📝 Commands\n\n### 👤 User Commands\n\n| Command | Description |\n|---------|-------------|\n| `/verify` | Start the email verification process |\n| `/data delete-user` | Delete your verification data and remove verified status |\n\n### 👥 Role Configuration\n\n| Command | Description |\n|---------|-------------|\n| `/role add \u003crole\u003e` | Add a default role given to all verified users |\n| `/role remove \u003crole\u003e` | Remove a role from the default roles list |\n| `/role list` | View all default roles |\n| `/role unverified [role]` | Set or view the optional role for unverified members |\n\n### 🎭 Domain-Specific Roles\n\nAssign different roles based on email domain:\n\n| Command | Description |\n|---------|-------------|\n| `/domainrole add \u003cdomain\u003e \u003crole\u003e` | Add a role for a specific email domain |\n| `/domainrole remove \u003cdomain\u003e \u003crole\u003e` | Remove a role from a domain |\n| `/domainrole list` | View all domain-role mappings |\n| `/domainrole clear \u003cdomain\u003e` | Remove all roles for a domain |\n\n\u003e 💡 **Example:** `/domainrole add @*.edu @Student` gives the Student role to anyone with a .edu email\n\n### 📧 Domain Management\n\n| Command | Description |\n|---------|-------------|\n| `/domain add \u003cdomains\u003e` | Add allowed email domains (supports `*` wildcard) |\n| `/domain remove \u003cdomains\u003e` | Remove allowed domains |\n| `/domain list` | View all allowed domains |\n| `/domain clear` | Remove all allowed domains |\n\n\u003e 💡 **Wildcard Example:** Use `@*.edu` to allow any `.edu` email address\n\n### 🚫 Blacklist Management\n\n| Command | Description |\n|---------|-------------|\n| `/blacklist add \u003cpatterns\u003e` | Block email patterns (supports `*` wildcard) |\n| `/blacklist remove \u003cpatterns\u003e` | Unblock patterns |\n| `/blacklist list` | View all blacklisted entries |\n| `/blacklist clear` | Remove all blacklist entries |\n\n\u003e 💡 **Wildcard Examples:** `*@tempmail.*` blocks all tempmail domains, `*spam*` blocks emails containing \"spam\"\n\n### ⚙️ Settings\n\n| Command | Description |\n|---------|-------------|\n| `/settings language \u003clang\u003e` | Change the bot's language |\n| `/settings log-channel [channel]` | Set or disable the verification log channel |\n| `/settings verify-message [message]` | Set or reset custom message in verification emails |\n| `/settings auto-verify \u003cenable\u003e` | Auto-prompt new members to verify on join |\n| `/settings auto-unverified \u003cenable\u003e` | Auto-assign unverified role to new members |\n\n### 🛡️ Moderation \u0026 Setup\n\n| Command | Description |\n|---------|-------------|\n| `/button \u003cchannel\u003e \u003cbuttontext\u003e` | Create a verification button embed in a channel |\n| `/manualverify \u003cuser\u003e \u003cemail\u003e` | Manually verify a user without email confirmation |\n| `/set_error_notify` | Configure where error notifications are sent |\n\n### 📊 Information\n\n| Command | Description |\n|---------|-------------|\n| `/status` | View bot configuration, statistics, and check for issues |\n| `/help` | Show setup instructions and command overview |\n\n### ⚠️ Data Management\n\n| Command | Description |\n|---------|-------------|\n| `/data delete-user` | Delete your personal verification data |\n| `/data delete-server` | Delete all server data and remove the bot |\n\n\u003e ⚠️ **Note:** Most commands require administrator permissions\n\n### Important: Role Hierarchy\n\nThe 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.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/bothierarchy.png\" alt=\"Role Hierarchy Example\" width=\"300\"\u003e\n\u003c/p\u003e\n\n---\n\n## 🐳 Self Hosting\n\nIf you want to self-host the bot, you have two options: **Docker** (recommended) or **Manual Installation**.\n\n\u003e 💖 **Enjoying the bot?** If you find this project useful, please consider [buying me a pizza](https://www.buymeacoffee.com/sral12486) to support ongoing development!\n\n### Docker (Recommended)\n\nThe easiest way to self-host is using Docker with the pre-built image.\n\n#### 1. Create a directory for the bot\n```bash\nmkdir emailverify \u0026\u0026 cd emailverify\n```\n\n#### 2. Create the config file\n```bash\nmkdir config\nnano config/config.json\n```\n\nAdd your configuration:\n```json\n{\n  \"token\": \"\u003cDiscord Bot Token\u003e\",\n  \"clientId\": \"\u003cDiscord Bot Client ID\u003e\",\n  \"email\": \"\u003cEmail Address\u003e\",\n  \"username\": \"\u003cMail Server Username\u003e\",\n  \"password\": \"\u003cEmail Password\u003e\",\n  \"smtpHost\": \"\u003cSMTP Server\u003e\",\n  \"isGoogle\": false\n}\n```\n\n#### 3. Create docker-compose.yml\n```yaml\nversion: '3'\nservices:\n  emailverify:\n    image: ghcr.io/lkaesberg/emailverify:latest\n    ports:\n      - 8181:8181\n    volumes:\n      - ./config:/usr/app/config\n    restart: always\n```\n\n#### 4. Start the bot\n```bash\ndocker-compose up -d\n```\n\n#### Docker CLI Alternative\n```bash\ndocker run -d \\\n  --name emailverify \\\n  -p 8181:8181 \\\n  -v $(pwd)/config:/usr/app/config \\\n  --restart always \\\n  ghcr.io/lkaesberg/emailverify:latest\n```\n\n---\n\n### Manual Installation\n\n**Requirements:** Node.js v16.15.0 or higher\n\n#### 1. Clone the repository\n```bash\ngit clone https://github.com/lkaesberg/EmailVerify.git\ncd EmailVerify\n```\n\n#### 2. Create the config file\n```bash\nnano config/config.json\n```\n\n```json\n{\n  \"token\": \"\u003cDiscord Bot Token\u003e\",\n  \"clientId\": \"\u003cDiscord Bot Client ID\u003e\",\n  \"email\": \"\u003cEmail Address\u003e\",\n  \"username\": \"\u003cMail Server Username\u003e\",\n  \"password\": \"\u003cEmail Password\u003e\",\n  \"smtpHost\": \"\u003cSMTP Server\u003e\",\n  \"isGoogle\": false\n}\n```\n\n#### 3. Install dependencies and start\n```bash\nnpm install\nnpm start\n```\n\n---\n\n### Configuration Options\n\n| Option | Description |\n|--------|-------------|\n| `token` | Your Discord Bot Token from the [Discord Developer Portal](https://discord.com/developers/applications) |\n| `clientId` | Your Discord Bot's Client ID |\n| `email` | The email address that will send verification codes |\n| `username` | SMTP server username (usually your email address) |\n| `password` | SMTP server password or App Password |\n| `smtpHost` | Your SMTP server (e.g., `smtp.gmail.com`) |\n| `isGoogle` | Set to `true` if using Gmail |\n| `topggToken` | *(Optional)* Your Top.gg API token |\n\n\u003e 💡 **Gmail Users:** You need to create an [App Password](https://support.google.com/accounts/answer/185833) and use that instead of your regular password.\n\n### Debugging\n\nType `email` in the console to see debugging messages for email errors.\n\n---\n\n## 👥 Contributors\n\n### Developer\n- **Lars Kaesberg** - [GitHub](https://github.com/lkaesberg)\n\n### Translators\n| Language | Contributor |\n|----------|-------------|\n| 🇬🇧 English | Lars Kaesberg |\n| 🇩🇪 German | Lars Kaesberg |\n| 🇪🇸 Spanish | gus2131 |\n| 🇵🇱 Polish | kploskonka |\n| 🇮🇱 Hebrew | Norma1Name |\n| 🇰🇷 Korean | iplayagain |\n| 🇫🇷 French | Charles Van |\n| 🇹🇷 Turkish | EmreSoftware |\n\n### Want to add a new language?\nCreate an issue with your translation file using the [English template](language/english.json) as a reference.\n\n---\n\n## 💖 Support the Project\n\nIf you're self-hosting this bot and find it useful, please consider supporting the development! Your contribution helps keep the project maintained and improved.\n\n![Buy Me A Pizza](https://img.buymeacoffee.com/button-api/?text=Support%20this%20project!\u0026emoji=%F0%9F%8D%95\u0026slug=sral12486\u0026button_colour=FFDD00\u0026font_colour=000000\u0026font_family=Cookie\u0026outline_colour=000000\u0026coffee_colour=ffffff)\n\n---\n\n\u003cp align=\"center\"\u003e\n  Made with ❤️ by \u003ca href=\"https://github.com/lkaesberg\"\u003eLars Kaesberg\u003c/a\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flkaesberg%2Femailverify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flkaesberg%2Femailverify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flkaesberg%2Femailverify/lists"}