# Unlock Unlimited $MOZ Tokens with This Lumoz Bot – Tap, Earn, Repeat! 💸

By [Degen Dojo](https://paragraph.com/@degendojo) · 2024-09-13

bot, airdrop, tap-tap

---

### ![](https://cdn.jsdelivr.net/npm/emoji-datasource-apple/img/apple/64/1f7e1.png) What is Lumoz?

Lumoz is designed for Web3 developers who want to seamlessly create zkEVM chains, using both **PoS** and **PoW** mechanisms. It is an innovative platform that combines ease of use with powerful computational solutions via ZK-Rollups. But besides its technical potential, **Lumoz** has also introduced a **gamified experience** through its Telegram app that rewards users with **$MOZ tokens**.

### ![](https://cdn.jsdelivr.net/npm/emoji-datasource-apple/img/apple/64/1f3ae.png) How to Play and Earn Points

In the **Lumoz Telegram app**, you can easily earn points by simply **tapping** the **Golden Snitch** on your screen. Here’s a step-by-step guide on how it works:

1.  **Tap the Golden Snitch** whenever it appears on the screen. ![](https://cdn.jsdelivr.net/npm/emoji-datasource-apple/img/apple/64/1f3af.png)
    
    ![](https://storage.googleapis.com/papyrus_images/d7d10d8784eb374ae2c409726924b5eb.png)
    
2.  **Convert the Golden Snitch** into points. 🔄 These points will later be transformed into **$MOZ** tokens.
    
    ![](https://storage.googleapis.com/papyrus_images/9a0bd5d64778e75d0381a85fe257d195.png)
    
3.  To exchange points for **$MOZ**, you’ll need diamonds. ![](https://cdn.jsdelivr.net/npm/emoji-datasource-apple/img/apple/64/1f48e.png)
    
4.  You can earn **1 diamond** for every **friend you invite** to the game.
    
5.  **Collect as many points as possible** to maximize your rewards! ![](https://cdn.jsdelivr.net/npm/emoji-datasource-apple/img/apple/64/1f4b0.png)
    

### 🤖 Automate Your Gameplay with a Lumoz Bot

Want to **earn points faster** without having to manually tap? You can set up a bot on a VPS to handle the tapping for you! Here’s how to get started:

#### Steps to Set Up the Bot:

*   **Get a VPS** (any specifications will do, as long as it has internet access).
    
*   **Create a folder** for the bot by running:
    
        mkdir lumoz
        cd lumoz
    
*   **Create a new file** for the bot script:
    
        nano lumoz.sh
    
*   **Paste the following bash script** into the file:
    
        #!/bin/bash
        
        # Configure URLs
        url_collect="https://quidditch-api.lumoz.org/api/quidditch/collect"
        url_collect_info="https://quidditch-api.lumoz.org/api/quidditch/collect_info"
        url_user_info="https://quidditch-api.lumoz.org/api/quidditch/user_info"
        url_spin="https://quidditch-api.lumoz.org/api/quidditch/play_spin"
        
        # Authorization Headers array for multiple users
        auths=(
        "ACCESS_TOKEN"
        )
        
        # Function to check if the response is valid JSON
        is_valid_json() {
            echo "$1" | jq . >/dev/null 2>&1
            return $?
        }
        
        # Function to check collect_info
        check_collect_info() {
            local auth=$1  # Authorization header from the parameter
            local username=$2 # Username from the parameter
        
            while true; do
                echo "Fetching collect_info for user $username..."
        
                response=$(curl -s -w "\n%{http_code}" -H "Authorization: $auth" "$url_collect_info")
        
                # Separate the body and status code
                response_body=$(echo "$response" | head -n -1)
                status_code=$(echo "$response" | tail -n 1)
        
                # Check if the response body is valid JSON
                if is_valid_json "$response_body"; then
                    if [ "$status_code" -eq 200 ]; then
                        echo "Collect Info Response Body: $response_body"
                        available_snitch=$(echo "$response_body" | jq -r '.available_snitch')
                        snitch_unit=$(echo "$response_body" | jq -r '.snitch_unit')
                        usdt=$(echo "$response_body" | jq -r '.usdt')
        
                        # Calculate quantity for snitch based on available_snitch / snitch_unit
                        if [ "$available_snitch" -gt 0 ] && [ "$snitch_unit" -gt 0 ]; then
                            qty=$((available_snitch / snitch_unit))
                            collect_snitch "$auth" "$qty" "$username"
                        fi
        
                        # If usdt > 0, collect usdt
                        if (( $(echo "$usdt > 0" | bc -l) )); then
                            # Convert usdt to integer (0.01 becomes 10000)
                            collect_amount_usdt=$(printf "%.0f" $(echo "$usdt * 1000000" | bc))
                            collect_usdt "$auth" "$collect_amount_usdt" "$username"
                        fi
        
        		sleep 5
                    else
                        echo "Failed to fetch collect_info for user $username, status code $status_code. Retrying in 2 seconds..."
                        sleep 2
                    fi
                else
                    echo "Failed to get valid JSON from collect_info for user $username. Retrying in 2 seconds..."
                    sleep 2
                fi
            done
        }
        
        # Function to collect snitch
        collect_snitch() {
            local auth=$1  # Authorization header from the parameter
            local qty=$2  # Quantity for snitch
            local username=$3  # Username from the parameter
            collect_amount=$((120 * qty + 120))
        
            while true; do
                echo "Sending collect with qty: $qty and collect_amount: $collect_amount for user $username"
                response=$(curl -s -w "\n%{http_code}" -H "Authorization: $auth" "$url_collect?collect_item=snitch&collect_amount=$collect_amount")
        
                response_body=$(echo "$response" | head -n -1)
                status_code=$(echo "$response" | tail -n 1)
        
                # Check if response body is valid JSON
                if is_valid_json "$response_body"; then
                    if [ "$status_code" -eq 200 ]; then
                        snitch_duration=$(echo "$response_body" | jq -r '.snitch_duration')
                        if [ "$snitch_duration" != "null" ] && [ -n "$snitch_duration" ]; then
                            echo "Collect snitch successful for user $username! Waiting 30 seconds before continuing."
                            get_user_info "$auth" "$username"
                            sleep 30
                            break  # Exit loop after success
                        else
                            echo "Invalid snitch duration, using default delay of 2 seconds."
                            sleep 2
                            continue  # Retry collect_snitch process
                        fi
                    else
                        echo "Collect snitch failed for user $username, status code $status_code. Retrying in 2 seconds..."
                        sleep 2
                    fi
                else
                    echo "Failed to get valid JSON from collect snitch for user $username. Retrying in 2 seconds..."
                    sleep 2
                fi
            done
        }
        
        # Function to collect usdt
        collect_usdt() {
            local auth=$1  # Authorization header from the parameter
            local amount=$2  # Amount for usdt
            local username=$3  # Username from the parameter
        
            while true; do
                echo "Sending collect usdt with collect_amount: $amount for user $username"
        
                response=$(curl -s -w "\n%{http_code}" -H "Authorization: $auth" "$url_collect?collect_item=usdt&collect_amount=$amount")
        
                response_body=$(echo "$response" | head -n -1)
                status_code=$(echo "$response" | tail -n 1)
        
                # Check if response body is valid JSON
                if is_valid_json "$response_body"; then
                    if [ "$status_code" -eq 200 ]; then
                        echo "Collect usdt successful for user $username!"
                        break
                    else
                        echo "Collect usdt failed for user $username, status code $status_code. Retrying in 2 seconds..."
                        sleep 2
                    fi
                else
                    echo "Failed to get valid JSON from collect usdt for user $username. Retrying in 2 seconds..."
                    sleep 2
                fi
            done
        }
        
        # Function to get user_info
        get_user_info() {
            local auth=$1  # Authorization header from the parameter
            local username=$2  # Username from the parameter
        
            while true; do
                echo "Fetching user info for user $username..."
        
                response=$(curl -s -w "\n%{http_code}" -H "Authorization: $auth" "$url_user_info")
        
                response_body=$(echo "$response" | head -n -1)
                status_code=$(echo "$response" | tail -n 1)
        
                # Check if response body is valid JSON
                if is_valid_json "$response_body"; then
                    if [ "$status_code" -eq 200 ]; then
                        points=$(echo "$response_body" | jq -r '.snitch')
                        echo "User $username points: $points"
        
                        if [ "$points" -gt 3200000 ]; then
                            echo "Points above 3.2M, spinning for user $username..."
                            play_spin "$auth" "$username"
                        else
                            echo "Points below 3.2M, no spin for user $username."
                        fi
                        break
                    else
                        echo "Failed to fetch user info for user $username, status code $status_code. Retrying in 2 seconds..."
                        sleep 2
                    fi
                else
                    echo "Failed to get valid JSON from user info for user $username. Retrying in 2 seconds..."
                    sleep 2
                fi
            done
        }
        
        # Function to perform spin
        play_spin() {
            local auth=$1  # Authorization header from the parameter
            local username=$2  # Username from the parameter
        
            while true; do
                echo "Spinning for user $username..."
        
                response=$(curl -s -w "\n%{http_code}" -H "Authorization: $auth" "$url_spin?spin_type=snitch&start_angle=0")
        
                response_body=$(echo "$response" | head -n -1)
                status_code=$(echo "$response" | tail -n 1)
        
                # Check if response body is valid JSON
                if is_valid_json "$response_body"; then
                    if [ "$status_code" -eq 200 ]; then
                        reward_item=$(echo "$response_body" | jq -r '.reward_item')
                        reward_amount=$(echo "$response_body" | jq -r '.reward_amount')
                        describe=$(echo "$response_body" | jq -r '.describe')
        
                        echo "Spin successful for user $username!"
                        echo "Reward: $reward_item with amount $reward_amount"
                        echo "Description: $describe"
                        break
                    else
                        echo "Spin failed for user $username, status code $status_code. Retrying in 2 seconds..."
                        sleep 2
                    fi
                else
                    echo "Failed to get valid JSON from spin for user $username. Retrying in 2 seconds..."
                    sleep 2
                fi
            done
        }
        
        # Main loop for each user
        for auth in "${auths[@]}"; do
            # Fetch username for each user
            response=$(curl -s -H "Authorization: $auth" "$url_user_info")
            if is_valid_json "$response"; then
                username=$(echo "$response" | jq -r '.username')
            
                if [ "$username" != "null" ] && [ -n "$username" ]; then
                    check_collect_info "$auth" "$username" &
                else
                    echo "Failed to get username for auth $auth"
                fi
            else
                echo "Failed to get valid JSON from user info for auth $auth"
            fi
        done
        
        # Wait for all processes to complete
        wait
    
*   **Save the script** by pressing `CTRL + X`, then press `Y` to confirm the save.
    
*   **Edit the access token** part of the script with your own token:
    
        auths=(
        "ACCESS_TOKEN"
        )
    
*   **Make file Executable** by run this command
    
        chmod +x ./lumoz.sh
    
*   **Run this bot**
    
        ./lumoz.sh
    

* * *

### ![](https://cdn.jsdelivr.net/npm/emoji-datasource-apple/img/apple/64/1f511.png) How to Get Your Access Token

*   **Open** [Telegram Web](https://web.telegram.org).
    
*   **Open the Lumoz bot** in Telegram.
    
*   Right-click and select “**Inspect Element.**”
    
    ![](https://storage.googleapis.com/papyrus_images/9f85995a3e17ae4affebf34c968b16e5.png)
    
*   Go to the “**Application**” tab and open **Local Storage**.
    
    ![](https://storage.googleapis.com/papyrus_images/c332210c897d053e5cb2995df794d364.png)
    
*   **Copy the value** from `user-tg-data`—this is your access token! (e.g., `dXNxxxxxxxxxx`).
    
    ![](https://storage.googleapis.com/papyrus_images/ddce17ae9d5f0fadbe19bf56e9a56bd6.png)
    
*   **Paste the token** into the `ACCESS_TOKEN` part of your `lumoz.sh` file.
    

* * *

### ![](https://cdn.jsdelivr.net/npm/emoji-datasource-apple/img/apple/64/1f4a1.png) Features of the Bot

*   **Auto Tap-Tap**: The bot will automatically tap the **Golden Snitch**, ensuring you never miss a chance to collect points. ![](https://cdn.jsdelivr.net/npm/emoji-datasource-apple/img/apple/64/1f525.png)
    
*   **Faster Points**: You’ll earn points much faster because the bot never gets tired! ![](https://cdn.jsdelivr.net/npm/emoji-datasource-apple/img/apple/64/1f3c3-200d-2642-fe0f.png)![](https://cdn.jsdelivr.net/npm/emoji-datasource-apple/img/apple/64/1f4a8.png)
    
*   **Auto Spin**: When the **Golden Snitch** count exceeds 3.2 million, the bot will automatically spin for maximum rewards. ![](https://cdn.jsdelivr.net/npm/emoji-datasource-apple/img/apple/64/1f3af.png)
    

This bot makes it easy to collect points and earn **$MOZ** tokens without constantly checking your screen. Set it up once, and let it do the work for you!

### ![](https://cdn.jsdelivr.net/npm/emoji-datasource-apple/img/apple/64/1f680.png) Make Sure Your Bot Is Running Well!

Once you've set up everything, you want to make sure your bot is running smoothly. Here’s what the log should look like when everything is functioning properly:

![](https://storage.googleapis.com/papyrus_images/cc29537ee9ea4c8ec1b05ce88e258e9b.png)

If you see the above log, your bot is successfully collecting points and spinning automatically! ![](https://cdn.jsdelivr.net/npm/emoji-datasource-apple/img/apple/64/1f389.png)

**Subscribe** to stay updated on more bots and tips for optimizing your crypto rewards. ![](https://cdn.jsdelivr.net/npm/emoji-datasource-apple/img/apple/64/1f680.png)

---

*Originally published on [Degen Dojo](https://paragraph.com/@degendojo/bot-lumoz-telegram-app)*
