# Data Collection

## Custom Data Collection System

This system allows server managers to request custom information from users (such as wallet addresses, emails, etc.) and lets users submit this information securely via a modal form. Admins can enable, view, disable, reset, and download all submissions.

***

### User Command

#### `/submit-info`

* **Description:**\
  Allows users to view what information is being requested by server managers and submit their response via a modal form.
* **Flow:**
  1. User runs `/submit-info`.
  2. If custom data collection is enabled, the bot displays an embed with the requested information.
  3. A modal form appears for the user to submit their information.
  4. Upon submission, the data is saved to the database and the user receives a confirmation message.

***

### Admin Commands

All admin commands require the `Manage Server` permission.

#### `/custom-data enable <information_requested>`

* **Description:**\
  Enables custom data collection for users and sets the information to be requested.
* **Example:**\
  `/custom-data enable "Please enter your wallet address"`

***

#### `/custom-data disable`

* **Description:**\
  Disables custom data collection for users. Users will no longer be able to submit information.

***

#### `/custom-data view`

* **Description:**\
  Shows the currently enabled custom data collection prompt for the server.

***

#### `/custom-data check <user>`

* **Description:**\
  Checks and displays the submitted custom data for a specific user.

***

#### `/custom-data reset-all`

* **Description:**\
  Resets (deletes) all users' submitted custom data for the server.\
  **Confirmation required:** The bot will ask for confirmation before proceeding.

***

#### `/custom-data download-csv`

* **Description:**\
  Downloads a CSV file containing all user submissions for the server.\
  **Rate Limit:** This command can only be used 30 times per month per user.

***

### Modal Submission

* When a user clicks to submit their information, a modal form appears with a text input field.
* The user enters the requested information and submits the form.
* The bot saves or updates the user's submission in the database.
* The user receives a confirmation embed upon successful submission.

***

### Example User Flow

1. **Admin:** Enables data collection:\
   `/custom-data enable "Please enter your wallet address"`
2. **User:** Runs `/submit-info`
   * Sees the prompt: "Please enter your wallet address"
   * Submits their address via the modal form
3. **Admin:** Downloads all submissions:\
   `/custom-data download-csv`

***

### Security

* All user submissions are private and only accessible to server managers via admin commands.
* Data can be reset or exported by admins as needed.

***

**Note:**\
This system is designed for flexibility and can be adapted to collect any type of custom information as required by server managers.

***
