feat(status): show money-supply metric in /status
Adds economy.get_economy_stats() (single-scan total coins, house balance, player-held coins, player count) and a "Rahavaru" field to /status, so admins can see whether the sinks are keeping pace with minted income. Also removed a duplicate bot_admin_check import. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013VbAVsrZuYesea99mPMmPT
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from .. import pb_client
|
||||
from . import house
|
||||
from .levels import get_level
|
||||
|
||||
|
||||
@@ -109,3 +110,30 @@ async def get_all_leaderboards() -> dict[str, list[tuple]]:
|
||||
"fish": [(r["user_id"], r.get("total_fish_caught", 0))
|
||||
for r in desc(lambda r: r.get("total_fish_caught", 0))],
|
||||
}
|
||||
|
||||
|
||||
async def get_economy_stats() -> dict[str, int]:
|
||||
"""Money-supply snapshot from a single scan: total coins in circulation, how
|
||||
much players hold vs. the house. Lets /status show whether the sinks (house,
|
||||
vanity burn, bail, fines) are keeping pace with minted income."""
|
||||
records = await pb_client.list_all_records()
|
||||
house_id = str(house.HOUSE_ID) if house.HOUSE_ID is not None else None
|
||||
total = 0
|
||||
house_balance = 0
|
||||
player_count = 0
|
||||
for r in records:
|
||||
uid = r.get("user_id")
|
||||
if not uid:
|
||||
continue
|
||||
bal = r.get("balance", 0) or 0
|
||||
total += bal
|
||||
if uid == house_id:
|
||||
house_balance = bal
|
||||
else:
|
||||
player_count += 1
|
||||
return {
|
||||
"total_coins": total,
|
||||
"house_balance": house_balance,
|
||||
"player_coins": total - house_balance,
|
||||
"player_count": player_count,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user