CommunicationDocumentedScanned

openpet

Virtual pet (Tamagotchi-style) game for chat platforms.

Share:

Installation

npx clawhub@latest install openpet

View the full skill documentation and source below.

Documentation

OpenPet

Virtual pet game. Each user gets one pet, tracked by {platform}_{userId}.

State

Pets stored in tamagotchi/pets/{platform}_{userId}.json:

{
  "name": "Blobby",
  "species": "blob",
  "hunger": 30,
  "happiness": 70,
  "energy": 50,
  "age": 5,
  "born": "2026-02-01T12:00:00Z",
  "lastUpdate": 1738442780000,
  "alive": true,
  "evolution": 1,
  "totalFeedings": 12,
  "totalPlays": 8,
  "ownerId": "202739061796896768",
  "platform": "discord",
  "ownerName": "mattzap"
}

Create tamagotchi/pets/ directory if missing.

Commands

TriggerAction
pet, pet statusShow stats + ASCII art
feed pethunger -30, happiness +5
play with pethappiness +25, energy -20
pet sleepenergy +40, happiness +5
name pet [name]Set pet name
new petReset (only if dead or confirm)
pet helpShow commands

New User Flow

  • Any pet command from unknown user → create egg

  • First interaction → hatch to blob

  • Show welcome message + commands
  • Stats Display

    ╭──────────╮
        │ (◕‿◕)    │
        │   ♥      │
        │ "Name"   │
        ╰──────────╯
        
     ❤️ Happiness: ████████░░░░  70%
     🍖 Hunger:    ███░░░░░░░░░  30%
     ⚡ Energy:    █████░░░░░░░  50%

    Use sprites from references/sprites.json. Mood = happy (≥70), neutral (40-69), sad (<40).

    Evolution

    StageRequirement
    egg → blobFirst interaction
    blob → catage ≥10, feedings ≥15, plays ≥10
    cat → dragonage ≥30, feedings ≥50, plays ≥40
    Check evolution after each interaction. Announce with fanfare.

    Death

    Pet dies if: hunger ≥ 100 OR happiness ≤ 0

    BUT if immortalMode: true in config, pets don't die — they just get very sad and hungry. Stats cap at 99/1 instead of triggering death. Default is immortal mode ON.

    Show memorial (if death enabled), offer new pet to restart.

    Decay (Cron)

    Set up cron job openpet-tick every 2 hours:

    • hunger +15, happiness -10, energy -5

    • Clamp all stats 0-100

    • Check death conditions

    • Alert owner if critical (hunger >80 or happiness <20)

    • Increment age daily


    Platform Detection

    Extract from message context:

    • Discord: discord_{userId}

    • WhatsApp: whatsapp_{phoneNumber}

    • Telegram: telegram_{chatId}

    • Signal: signal_{uuid}


    Alerts

    Send to user's origin platform when:

    • Pet is hungry (>80): "🍖 {name} is starving!"

    • Pet is sad (<20): "😢 {name} misses you!"

    • Pet died: "💀 {name} has passed away..."

    • Evolution: "✨ {name} evolved into a {species}!"