add key plays to post-game scorebug
This commit is contained in:
parent
6650970bbc
commit
39b81bf10b
136
cogs/players.py
136
cogs/players.py
@ -1073,12 +1073,23 @@ class Players(commands.Cog):
|
||||
await asyncio.sleep(1)
|
||||
setup_tab = scorecard.worksheet_by_title('Setup')
|
||||
g_data = setup_tab.get_values('M2', 'R3')
|
||||
setup_vals = setup_tab.get_values('B7', 'R33')
|
||||
at_abbrev = g_data[0][0]
|
||||
ht_abbrev = g_data[1][0]
|
||||
away_mgr_name = g_data[0][2]
|
||||
home_mgr_name = g_data[1][2]
|
||||
away_team = await get_team_by_abbrev(at_abbrev, current['season'])
|
||||
home_team = await get_team_by_abbrev(ht_abbrev, current['season'])
|
||||
week_num = g_data[0][5]
|
||||
game_num = g_data[1][5]
|
||||
if away_team['manager2'] is not None and away_team['manager2']['name'].lower() == away_mgr_name:
|
||||
away_manager = away_team['manager2']
|
||||
else:
|
||||
away_manager = away_team['manager1']
|
||||
if home_team['manager2'] is not None and home_team['manager2']['name'].lower() == home_mgr_name:
|
||||
home_manager = home_team['manager2']
|
||||
else:
|
||||
home_manager = home_team['manager1']
|
||||
|
||||
logging.info(f'gdata: {g_data}\nweek/game: {week_num}/{game_num}')
|
||||
|
||||
@ -1226,7 +1237,8 @@ class Players(commands.Cog):
|
||||
# Log game result
|
||||
try:
|
||||
g_resp = await db_patch('games', object_id=this_game['id'], params=[
|
||||
('away_score', score_table[0][0]), ('home_score', score_table[1][0])
|
||||
('away_score', int(score_table[0][0])), ('home_score', int(score_table[1][0])),
|
||||
('away_manager_id', away_manager['id']), ('home_manager_id', home_manager['id']), ('game_num', game_num)
|
||||
])
|
||||
except ValueError as e:
|
||||
logging.error(f'PATCH game error: {e}')
|
||||
@ -1252,7 +1264,8 @@ class Players(commands.Cog):
|
||||
b_sv = []
|
||||
holds = []
|
||||
for line in all_decisions:
|
||||
this_data = {'game_id': this_game['id']}
|
||||
this_data = {'game_id': this_game['id'], 'season': this_game['season'], 'week': this_game['week'],
|
||||
'game_num': game_num}
|
||||
for count, x in enumerate(line):
|
||||
if x != '':
|
||||
this_data[pit_keys[count]] = x
|
||||
@ -1285,20 +1298,20 @@ class Players(commands.Cog):
|
||||
content=f'The following errors were found in your **wk{week_num}g{game_num}** scorecard. '
|
||||
f'Please resolve them and resubmit - thanks!\n\n{e}'
|
||||
)
|
||||
await db_post(f'games/wipe/{this_game["id"]}')
|
||||
await db_delete('plays/game', object_id=this_game['id'])
|
||||
await db_delete('decisions/game', object_id=this_game['id'])
|
||||
return
|
||||
|
||||
# Post scorecard to news channel
|
||||
card_url = f'<{SBA_BASE_URL}/scorecards/?season={current["season"]}&week={week_num}&game={game_num}' \
|
||||
f'&away_abbrev={away_team["abbrev"]}&home_abbrev={home_team["abbrev"]}>'
|
||||
extras = ''
|
||||
if final_inning > 9:
|
||||
if int(final_inning) > 9:
|
||||
extras = f' F/{final_inning}'
|
||||
embed = get_team_embed(
|
||||
f'{away_team["sname"]} {score_table[0][0]} @ '
|
||||
f'{score_table[1][0]} {home_team["sname"]}{extras}',
|
||||
team=away_team if score_table[0][0] > score_table[1][0] else home_team
|
||||
team=away_team if int(score_table[0][0]) > int(score_table[1][0]) else home_team
|
||||
)
|
||||
embed.description = f'Week {week_num} | Game {game_num}'
|
||||
|
||||
@ -1314,9 +1327,6 @@ class Players(commands.Cog):
|
||||
inline=False
|
||||
)
|
||||
|
||||
# TODO: pull highlight stats for embed
|
||||
logging.info(f'pull highlight stats for embed')
|
||||
|
||||
pitching_string = f'WP: {wp["name"]}\n' \
|
||||
f'LP: {lp["name"]}\n' \
|
||||
f'{"HD: " if len(holds) > 0 else ""}'
|
||||
@ -1337,6 +1347,100 @@ class Players(commands.Cog):
|
||||
|
||||
embed.add_field(name='Pitching', value=pitching_string, inline=False)
|
||||
|
||||
# TODO: pull highlight stats for embed
|
||||
logging.info(f'pull highlight stats for embed')
|
||||
p_query = await db_get('plays', params=[
|
||||
('game_id', this_game['id']), ('sort', 'wpa-desc'), ('limit', 3)
|
||||
])
|
||||
|
||||
key_plays = ''
|
||||
for play in p_query['plays']:
|
||||
logging.info(f'this_play: {play}')
|
||||
this_line = f'- {play["inning_half"].title()} {play["inning_num"]}: '
|
||||
|
||||
# Offensive Play
|
||||
if play['wpa'] > 0:
|
||||
logging.info('OFFENSE')
|
||||
if play['runner'] is not None:
|
||||
logging.info('RUNNER')
|
||||
if play['on_third'] == play['runner']['id']:
|
||||
s_base = 'HOME'
|
||||
elif play['on_second'] == play['runner']['id']:
|
||||
s_base = 'third'
|
||||
else:
|
||||
s_base = 'second'
|
||||
this_line += f'{play["runner"]["name"]} ({play["runner"]["team"]["abbrev"]}) steals {s_base}'
|
||||
else:
|
||||
logging.info('BATTER')
|
||||
if play['homerun'] == 1:
|
||||
h_name = 'HOMERS'
|
||||
elif play['triple'] == 1:
|
||||
h_name = 'triples'
|
||||
elif play['double'] == 1:
|
||||
h_name = 'doubles'
|
||||
else:
|
||||
h_name = 'singles'
|
||||
logging.info('RBI?')
|
||||
if play['rbi'] > 0:
|
||||
rbi_string = f'in {play["rbi"]} run{"s" if play["rbi"] > 1 else ""}'
|
||||
else:
|
||||
rbi_string = ''
|
||||
logging.info('LINE?')
|
||||
this_line += f'{play["batter"]["name"]} ({play["batter"]["team"]["abbrev"]}) {h_name} {rbi_string}'
|
||||
# Defensive Play
|
||||
else:
|
||||
logging.info('DEFENSE')
|
||||
if play['catcher'] is not None:
|
||||
logging.info('CATCHER')
|
||||
if play['on_third_final'] == 0:
|
||||
s_base = 'HOME'
|
||||
elif play['on_second_final'] == 0:
|
||||
s_base = 'third'
|
||||
else:
|
||||
s_base = 'second'
|
||||
this_line += f'{play["catcher"]["name"]} ({play["catcher"]["team"]["abbrev"]}) throws out the ' \
|
||||
f'runner at {s_base}'
|
||||
elif play['defender'] is not None:
|
||||
logging.info('DEFENDER')
|
||||
if play['outs'] == 3:
|
||||
play_string = 'turns a TRIPLE PLAY'
|
||||
elif play['outs'] == 2:
|
||||
play_string = 'rolls a double play'
|
||||
else:
|
||||
play_string = f'makes a tough play at {play["check_pos"]}'
|
||||
this_line += f'{play["defender"]["name"]} ({play["defender"]["team"]["abbrev"]}) {play_string}'
|
||||
else:
|
||||
logging.info('PITCHER')
|
||||
if play['so'] == 1:
|
||||
if play['starting_outs'] == 2:
|
||||
out_th = 'for the 3rd out'
|
||||
elif play['starting_outs'] == 1:
|
||||
out_th = 'for the 2nd out'
|
||||
else:
|
||||
out_th = 'to leadoff the inning'
|
||||
play_string = f'gets a K {out_th}'
|
||||
elif play['on_base_code'] != '000' and play['starting_outs'] + play['outs'] > 2:
|
||||
num_runners = play["on_base_code"].count("1")
|
||||
play_string = f'strands {num_runners} runner{"s" if num_runners > 1 else ""}'
|
||||
else:
|
||||
if play['starting_outs'] == 2:
|
||||
play_string = 'records the 3rd out'
|
||||
elif play['starting_outs'] == 1:
|
||||
play_string = 'records the 2nd out'
|
||||
else:
|
||||
play_string = 'retires the leadoff batter'
|
||||
this_line += f'{play["pitcher"]["name"]} ({play["pitcher"]["team"]["abbrev"]}) {play_string}'
|
||||
|
||||
key_plays += f'{this_line}\n'
|
||||
|
||||
if len(key_plays) > 0:
|
||||
embed.add_field(
|
||||
name='Key Plays',
|
||||
value=key_plays,
|
||||
inline=False
|
||||
)
|
||||
|
||||
|
||||
# batting_string = ''
|
||||
# count = 1
|
||||
# if len(final_doubles) > 0:
|
||||
@ -1432,7 +1536,8 @@ class Players(commands.Cog):
|
||||
|
||||
embed.add_field(
|
||||
name='Scorecard',
|
||||
value=f'[Website]({card_url}) / [Sheets]({sheet_url})'
|
||||
value=f'[Website]({card_url}) / [Sheets]({sheet_url})',
|
||||
inline=False
|
||||
)
|
||||
embed.set_footer(text='Please share the highlights!')
|
||||
|
||||
@ -1446,6 +1551,19 @@ class Players(commands.Cog):
|
||||
update = await interaction.channel.send('I\'m tallying standings now...')
|
||||
if await db_post(f'standings/s{current["season"]}/recalculate'):
|
||||
await update.delete()
|
||||
await interaction.edit_original_response(content='You are all set!')
|
||||
|
||||
try:
|
||||
setup_tab.update_values(
|
||||
crange=f'B7',
|
||||
values=setup_vals
|
||||
)
|
||||
await interaction.edit_original_response(content='You are all set!')
|
||||
except Exception as e:
|
||||
logging.error(f'could not freeze sheet for game {this_game["id"]}')
|
||||
await interaction.edit_original_response(
|
||||
content='I was not able to freeze the rosters in your sheet, but everything else went through.'
|
||||
)
|
||||
|
||||
@app_commands.command(name='branding', description='Update your team branding')
|
||||
@app_commands.guilds(discord.Object(id=os.environ.get('GUILD_ID')))
|
||||
|
||||
Loading…
Reference in New Issue
Block a user