# 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.drakodevelopment.net/moderation-and-roles/verification.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
