fix some scoreboard shit (#1364)

This commit is contained in:
NotSoToothless
2026-06-30 07:22:13 -07:00
committed by GitHub
parent c417226e9e
commit cfd2458ab3
4 changed files with 81 additions and 3 deletions
+46 -2
View File
@@ -23,8 +23,48 @@ from typing import Any, Dict, List, Optional
import aiosqlite
from spectra_replay_normalize import strip_model_prefix
log = logging.getLogger("tssbot.storage")
try:
from data_parser import LangTableReader, apply_vehicle_name_filters # type: ignore
except Exception: # pragma: no cover - only when SHARED is unavailable
LangTableReader = None # type: ignore
def apply_vehicle_name_filters(name, strip_decorations=True): # type: ignore
return name
_EN_VEHICLE_TRANSLATOR = None
def _vehicle_display_name(internal: str) -> str:
"""Return parser-translated English vehicle name, falling back to internal ID."""
if not internal:
return ""
if LangTableReader is None:
return internal
global _EN_VEHICLE_TRANSLATOR
if _EN_VEHICLE_TRANSLATOR is None:
try:
_EN_VEHICLE_TRANSLATOR = LangTableReader("English")
except Exception as exc: # pragma: no cover
log.warning("LangTableReader('English') failed: %s", exc)
return internal
try:
translated = _EN_VEHICLE_TRANSLATOR.get_translate(internal)
except Exception:
translated = None
return apply_vehicle_name_filters(translated) if translated else internal
def _unit_vehicle_fields(unit: dict[str, Any]) -> tuple[str, str] | None:
"""Return (display_name, internal_id) for a Spectra unit without using unit_normalized."""
internal = strip_model_prefix(unit.get("unit"))
if not internal:
return None
return _vehicle_display_name(internal), internal
# ---------------------------------------------------------------------------
# Paths
@@ -377,14 +417,18 @@ async def insert_player_games(game: Dict[str, Any]) -> None:
continue
for unit in used_units:
vehicle_fields = _unit_vehicle_fields(unit)
if vehicle_fields is None:
continue
vehicle, internal = vehicle_fields
rows.append((
str(uid_str),
str(p.get("name") or ""),
str(tss_team.get("team_name") or tss_team.get("name") or ""),
str(p.get("team") or ""), # team_slot ("1" or "2")
session_id,
str(unit.get("unit_normalized") or ""),
str(unit.get("unit") or ""),
vehicle,
internal,
int(p.get("ground_kills") or 0),
int(p.get("air_kills") or 0),
int(p.get("assists") or 0),
+1 -1
View File
@@ -70,7 +70,7 @@ def _build_units(units: list[dict[str, Any]], translate, dead: set[str] | None =
is_dead = bool(flag) if flag is not None else internal.lower() in dead_lc
out.append({
"internal": internal,
"name": translate(internal) or u.get("unit_normalized") or internal,
"name": translate(internal) or internal,
"used": bool(u.get("used")),
"dead": is_dead,
"unit_type": u.get("unit_type"),