> For the complete documentation index, see [llms.txt](https://utxo-global.gitbook.io/utxo-global/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://utxo-global.gitbook.io/utxo-global/verix/admin-setup.md).

# Admin Setup

To begin using VeriX in your Telegram community, follow these steps:

1. **Add VeriX Bot to Your Telegram Group**&#x20;
   * Invite the Bot:&#x20;
     * For **Testnet**, add `@verixstagbot`.
     * For **Mainnet**, add `@utxo_global_verix_bot`.
   * Promote to Admin: Go to your Telegram group settings, choose the “**Administrators**” tab, and grant **VeriX** the ability to remove members who fail verification.

     <figure><img src="https://3349514445-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFTtvHjOu0Bre6YLqnQdE%2Fuploads%2FFQRktSOX63Zdaq1sBEpC%2FScreenshot%202025-04-14%20at%2022.13.00.png?alt=media&amp;token=7f96d366-ad14-410a-973c-67a9730a024c" alt="" width="188"><figcaption></figcaption></figure>

     * *Important Note:* It may take up to **10 minutes** for VeriX’s features to fully activate after promotio&#x6E;*.*
2. **Supported Gating Types (via `/settoken`)**

* All on-chain gating - whether native CKB, an xUDT token, or an NFT—uses the same `/settoken` command. VeriX will automatically detect if the provided `type_hash` corresponds to an xUDT or an NFT contract.
* ```
  /settoken ckb
    → Gate by native CKB balance.

  /settoken <type_hash>
    → Gate by whichever asset that type_hash represents:
        • xUDT (user-defined token)  
        • NFT (e.g. Spore Protocol collection)
  ```
  * CKB: `/settoken ckb`
  * xUDT or NFT: `/settoken 0xab12…34` (bot introspects on-chain to know if it’s a token or an NFT)
  * Combine with `/setamount` to set:
    * a minimum balance (for CKB/xUDT), or
    * a minimum count (for NFTs).

3. **Configure the Bot via Commands**

```
/help
  Lists all available commands.

/groupconfig
  View current settings (min age, token type, required balance).
  
/listusers
  List currently verified users and their status.

/setage <years>
  Set minimum age requirement.
    e.g. /setage 21

/settoken <type_hash|ckb>
  Choose gating token:
    • "ckb" → native CKB  
    • Any valid xUDT/NFT type_hash → specific xUDT or NFT  
  e.g. /settoken ckb  
       /settoken 0xab12…34

/setamount <number>
  Set minimum balance required of the active token (CKB, xUDT, or NFT count).
    e.g. /setamount 100
         (100 CKB, or 100 xUDT, or 1 for an NFT if you require at least 1)

```

{% hint style="info" %}
**Unit Note for `/setamount`**

> • whole-coin units for CKB (1 CKB = 100,000,000 shannon)\
> • token decimals for xUDT\
> • simple count for NFTs
> {% endhint %}

4. **How to Find a Token’s `type_hash`**

* Open the Appropriate Explorer
  * **Mainnet:** <https://explorer.nervos.org/>
  * **Testnet:** <https://testnet.explorer.nervos.org/>
* Navigate to the Asset List
  * In the top menu, click **Coins** → **xUDT** for tokens, or **NFT Collections** for NFTs.
* Search for Your Asset
  * Type the token/NFT name or paste its contract address into the search bar.
* Copy the Type Hash
  * On the asset’s detail page, the URL contains the `type_hash`.
    * Example – xUDT (Mainnet)

      ```
      https://explorer.nervos.org/xudt/0x178fb47b597a56d48b549226aff59f750b4784250c7f40f781b64ef090a8a0a7
      → type_hash = 0x178fb47b597a56d48b549226aff59f750b4784250c7f40f781b64ef090a8a0a7
      ```
    * Example – NFT Collection (Testnet)

      ```
      https://testnet.explorer.nervos.org/nft-collections/0x7401053f5cf6857c32ecffb63d89cb8cbce7305877617680f605a66288783ae8?tab=transfers
      → type_hash = 0x7401053f5cf6857c32ecffb63d89cb8cbce7305877617680f605a66288783ae8
      ```

5. **Best Practices**

* *Verify Admin Permissions:* Ensure VeriX retains **Ban Users** rights.
* *Start Small:* Test in a staging group before going live.
* *Monitor Logs:* Run `/groupconfig` after any change.
* *Combine Checks:* For both age and token gating, set both `/setage` , `/settoken` , and `/setamount` appropriately.
