#!/usr/bin/env python3 """ CLI Tool to list, inspect, and manage registered users in Plants vs. Zombies database. Usage: python3 scripts/manage_users.py # List all registered users in a formatted table python3 scripts/manage_users.py # Show detailed full JSON profile for a specific user """ import sys import json import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0, os.path.join(BASE_DIR, "scripts")) import db def print_user_table(users): if not users: print("\nВ базе данных пока нет зарегистрированных пользователей.") print("Чтобы зарегистрироваться, откройте игру на https://ai.qpid.pro/ и нажмите кнопку «Войти».\n") return print("\n" + "=" * 90) print(f"{'ID':<4} | {'Имя пользователя':<18} | {'Монеты':<8} | {'Уровень':<8} | {'Макс Ур':<8} | {'Рекорд':<8} | {'Создан':<19}") print("-" * 90) for u in users: print(f"{u['id']:<4} | {u['username']:<18} | {u['coins']:<8} | {u['level']:<8} | {u['maxUnlockedLevel']:<8} | {u['highScore']:<8} | {u['createdAt']:<19}") print("=" * 90) print(f"Всего зарегистрировано пользователей: {len(users)}\n") def print_user_detail(username): users = db.list_all_users() target = next((u for u in users if u["username"].lower() == username.lower()), None) if not target: print(f"\nПользователь '{username}' не найден в базе данных.\n") return print("\n" + "=" * 60) print(f" Профиль пользователя: {target['username']} (ID: {target['id']})") print("=" * 60) print(f" Дата регистрации: {target['createdAt']}") print(f" Последний вход: {target['lastLogin']}") print(f" Текущий уровень: {target['level']}") print(f" Макс. открытый: {target['maxUnlockedLevel']}") print(f" Всего монет: {target['coins']}") print(f" Рекорд очков: {target['highScore']}") print(f" Тема оформления: {target['theme']}") print("-" * 60) print(" Материалы мастерской:") for mat, count in target['materials'].items(): print(f" - {mat}: {count}") print("-" * 60) print(" Уровни растений:") for plant, lvl in target['plantLevels'].items(): print(f" - {plant}: Уровень {lvl}") print("-" * 60) print(" Перки:") for perk, lvl in target['perks'].items(): print(f" - {perk}: Уровень {lvl}") print("-" * 60) print(" Дерево Мудрости:") print(f" - Высота: {target['treeOfWisdom'].get('height', 0)} футов") print("=" * 60 + "\n") if __name__ == "__main__": db.init_db() if len(sys.argv) > 1: print_user_detail(sys.argv[1]) else: users = db.list_all_users() print_user_table(users)