From 1030701033eaa940d065347b49ca9ee97bb670fe Mon Sep 17 00:00:00 2001 From: SimolZimol <70102430+SimolZimol@users.noreply.github.com> Date: Sun, 26 Oct 2025 01:53:54 +0200 Subject: [PATCH] modified: app.py --- app.py | 124 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/app.py b/app.py index b1e62ba..e85420a 100644 --- a/app.py +++ b/app.py @@ -416,74 +416,74 @@ async def hoi4end(ctx, game_name: str, winner_team: str): (game_name,) ) game = await cursor.fetchone() - - if not game: - await ctx.send(f"❌ No active game found with name '{game_name}'!") - return - - players = json.loads(game['players']) if game['players'] else [] - - if len(players) < 2: - await ctx.send("❌ Game needs at least 2 players to end!") - return - - # Check if winner team exists - teams = {p['team_name'] for p in players} - if winner_team not in teams: - await ctx.send(f"❌ Team '{winner_team}' not found in game! Available teams: {', '.join(teams)}") - return - - # Calculate team averages - team_elos = {} - team_players = {} - - for player in players: - team = player['team_name'] - if team not in team_elos: - team_elos[team] = [] - team_players[team] = [] - team_elos[team].append(player['current_elo']) - team_players[team].append(player) - - # Calculate average ELOs for each team - team_averages = {team: sum(elos) / len(elos) for team, elos in team_elos.items()} - - elo_changes = [] - - # Calculate ELO changes for each player - for player in players: - team = player['team_name'] - won = team == winner_team + if not game: + await ctx.send(f"❌ No active game found with name '{game_name}'!") + return - # Calculate opponent average (average of all other teams) - opponent_elos = [] - for other_team, elos in team_elos.items(): - if other_team != team: - opponent_elos.extend(elos) + players = json.loads(game['players']) if game['players'] else [] - opponent_avg = sum(opponent_elos) / len(opponent_elos) if opponent_elos else player['current_elo'] + if len(players) < 2: + await ctx.send("❌ Game needs at least 2 players to end!") + return - elo_change = calculate_elo_change( - player['current_elo'], - opponent_avg, - won, - player['t_level'] - ) + # Check if winner team exists + teams = {p['team_name'] for p in players} + if winner_team not in teams: + await ctx.send(f"❌ Team '{winner_team}' not found in game! Available teams: {', '.join(teams)}") + return - new_elo = max(0, player['current_elo'] + elo_change) # Prevent negative ELO + # Calculate team averages + team_elos = {} + team_players = {} + + for player in players: + team = player['team_name'] + if team not in team_elos: + team_elos[team] = [] + team_players[team] = [] + + team_elos[team].append(player['current_elo']) + team_players[team].append(player) + + # Calculate average ELOs for each team + team_averages = {team: sum(elos) / len(elos) for team, elos in team_elos.items()} + + elo_changes = [] + + # Calculate ELO changes for each player + for player in players: + team = player['team_name'] + won = team == winner_team + + # Calculate opponent average (average of all other teams) + opponent_elos = [] + for other_team, elos in team_elos.items(): + if other_team != team: + opponent_elos.extend(elos) + + opponent_avg = sum(opponent_elos) / len(opponent_elos) if opponent_elos else player['current_elo'] + + elo_change = calculate_elo_change( + player['current_elo'], + opponent_avg, + won, + player['t_level'] + ) + + new_elo = max(0, player['current_elo'] + elo_change) # Prevent negative ELO + + elo_changes.append({ + 'discord_id': player['discord_id'], + 'username': player['username'], + 'team_name': team, + 't_level': player['t_level'], + 'old_elo': player['current_elo'], + 'new_elo': new_elo, + 'elo_change': elo_change, + 'won': won + }) - elo_changes.append({ - 'discord_id': player['discord_id'], - 'username': player['username'], - 'team_name': team, - 't_level': player['t_level'], - 'old_elo': player['current_elo'], - 'new_elo': new_elo, - 'elo_change': elo_change, - 'won': won - }) - # Update player ELOs and save game results for change in elo_changes: # Update player ELO