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
| Trigger | Action |
|---|---|
pet, pet status |
Show stats + ASCII art |
feed pet |
hunger -30, happiness +5 |
play with pet |
happiness +25, energy -20 |
pet sleep |
energy +40, happiness +5 |
name pet [name] |
Set pet name |
new pet |
Reset (only if dead or confirm) |
pet help |
Show 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
| Stage | Requirement |
|---|---|
| egg โ blob | First interaction |
| blob โ cat | age โฅ10, feedings โฅ15, plays โฅ10 |
| cat โ dragon | age โฅ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}!"