# Verification

### Overview

This system helps with **security, organization, and onboarding**. It has two main parts:

* **Join Roles** → Automatically give roles to users when they join.
* **Verification System** → Require users to verify before accessing the server.

***

### Join Roles System

#### How It Works

* **Automatic assignment** → Users get the listed roles instantly on joining.
* **Multiple roles** → You can assign more than one role at once.
* **Role restoration** → If enabled, the bot remembers and restores previous roles when someone rejoins.

#### Role Restoration Settings

* **Blacklist** → Roles that will **not** be restored (e.g., muted/punished roles).
* **Whitelist** → Only these roles are restored.

{% hint style="success" %}
**Hint:** If both are used → **Whitelist always takes priority**.
{% endhint %}

***

### Verification System

#### Basic Configuration

Enable this system to force users to verify before gaining server access.

#### Verification Types

1. **Button Verification (`BUTTON`)**
   * Easiest option: One click to verify.
   * Great for casual servers and smooth onboarding.
2. **Calculator Verification (`CALCULATOR`)**
   * Users must solve a random math problem (e.g., *What is 7 + 3?*).
   * Wrong answers let them retry.
   * Good balance of security vs. ease.
3. **CAPTCHA Verification (`CAPTCHA`)**
   * Bot sends an image/text CAPTCHA.
   * User must type the solution to verify.
   * Strongest anti-bot protection.

***

### Unverified Role System

When enabled:

* Bot creates an **@Unverified** role automatically.
* This role can only see the verification channel.
* Once verified, the role is removed and the user gets normal access.

**Alternative:** You can also set this role up manually.

***

### Setup Examples

#### Basic Server Verification

* Use **BUTTON** for easy onboarding.
* Single @Member role is given after verification.

#### Security-Focused Server

* Use **CAPTCHA** or **CALCULATOR**.
* Add @Unverified role with restricted access.
* Whitelist role restoration to prevent restoring punished roles.

#### Community Server

* BUTTON or CALCULATOR for balance.
* Multiple join roles (e.g., @Introduced, @Community).

#### Gaming Server

* BUTTON + Role menu after verification.
* Gives @Player role automatically.

***

### Common Issues & Solutions

**“Verification not working”**

* Make sure system is enabled.
* Check `ChannelID` is correct.
* Verify bot can send messages in that channel.

**“Roles not being assigned”**

* Replace all `ROLE_ID` with real IDs.
* Ensure bot’s role is **higher** than assigned roles.

**“Users can’t see verification channel”**

* Check **@Unverified** role permissions.
* Ensure **@everyone** can’t access other channels.

**“Role restoration not working”**

* Confirm `RestoreRoles.Enabled: true`.
* Check whitelist/blacklist setup.

**“Calculator or CAPTCHA too difficult”**

* Calculator only uses numbers **1–20** with addition/subtraction.
* CAPTCHA uses simple text recognition.
* Switch to **BUTTON** if you want less friction.

***

### Security Considerations

* **Anti-Bot Protection**:
  * BUTTON → easiest, least secure.
  * CALCULATOR / CAPTCHA → strongest security.
* **Role Security**:
  * Don’t restore punishment roles (muted, banned).
  * Use **whitelist** for sensitive setups.
* **Channel Security**:
  * Verification channel should be **read-only** except for bot.
  * Auto-delete verification attempts if needed.
