nested schema fixes

This commit is contained in:
2026-07-12 23:53:42 +05:30
parent 5da0a688a8
commit 1940e33bc7
3 changed files with 24 additions and 20 deletions

View File

@@ -2,16 +2,20 @@ import asyncio
import random
import json
_sounds_by_species = {"dog": ["woof"], "cat": ["meow"], "bird": ["coo"]}
_behaviors_by_species = {
"dog": ["wagging_tail", "stretching", "showing_belly", "barking", "panting"],
"cat": ["blep", "stretching", "showing_belly", "purring", "kneading"],
"bird": ["head_tilt", "stretching", "chirping", "wing_flap"],
}
_subscribers: dict[int, list[asyncio.Queue]] = {}
_worker_tasks: dict[int, asyncio.Task] = {}
async def _sound_worker(pet_id: int, species: str):
sounds = _sounds_by_species.get(species, ["woof"])
async def _behavior_worker(pet_id: int, species: str):
behaviors = _behaviors_by_species.get(species, ["wagging_tail"])
while True:
sound = random.choice(sounds)
data = json.dumps({"sound": sound})
action = random.choice(behaviors)
data = json.dumps({"action": action})
queues = _subscribers.get(pet_id, [])
for q in queues:
await q.put(data)
@@ -22,7 +26,7 @@ def _ensure_worker(pet_id: int, species: str):
if pet_id not in _worker_tasks or _worker_tasks[pet_id].done():
_subscribers.setdefault(pet_id, [])
_worker_tasks[pet_id] = asyncio.create_task(
_sound_worker(pet_id, species)
_behavior_worker(pet_id, species)
)