Auto merge dev → main (#1339)

* feat(tally): /tally-claim, /tally-transfer, /tally-wipe commands

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(tally): idle sweep, startup load, and empty-VC expiry

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* style(tally): parenthesize voice-state guard for clarity

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(tally): update live tallies when sessions finish

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(tally): robust winner matching + cleanup of deleted-VC tallies

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(tally): /dev-tally to manually attribute a win/loss in your VC

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
NotSoToothless
2026-06-19 01:19:19 -07:00
committed by GitHub
parent 732595433a
commit 9222f7c53f
4 changed files with 316 additions and 4 deletions
+9
View File
@@ -67,6 +67,7 @@ from .utils import (
WILDCARD_KEYS,
)
from .wl import record_result, record_draw, get_standings
from . import tally
# ============================================================================
@@ -1131,6 +1132,14 @@ async def process_session(
else:
new_wl = get_standings(squadrons_clean)
# Update any live voice-channel tallies for this guild against this game.
try:
await tally.on_session_processed(
guild_id, teams, winner, is_draw, session_id
)
except Exception as e:
logging.error(f"[TALLY] hook failed for session {session_id}: {e}")
# Scoreboard Build
lock = _scoreboard_locks.setdefault(session_id, asyncio.Lock())
async with lock: