Add Google Sheet link to draft embeds
Added sheet_url parameter to draft embed functions: - create_draft_board_embed - "View Full Board" link - create_admin_draft_info_embed - "View Sheet" link - create_on_the_clock_embed - "View Full Board" link - create_on_clock_announcement_embed - "View Full Board" link Updated all callers to pass the sheet URL from config. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
ff62529ee3
commit
bf70aed890
@ -76,8 +76,11 @@ class DraftAdminGroup(app_commands.Group):
|
|||||||
draft_data.currentpick
|
draft_data.currentpick
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Get sheet URL
|
||||||
|
sheet_url = config.get_draft_sheet_url(config.sba_season)
|
||||||
|
|
||||||
# Create admin info embed
|
# Create admin info embed
|
||||||
embed = await create_admin_draft_info_embed(draft_data, current_pick)
|
embed = await create_admin_draft_info_embed(draft_data, current_pick, sheet_url)
|
||||||
await interaction.followup.send(embed=embed)
|
await interaction.followup.send(embed=embed)
|
||||||
|
|
||||||
@app_commands.command(name="timer", description="Enable or disable draft timer")
|
@app_commands.command(name="timer", description="Enable or disable draft timer")
|
||||||
|
|||||||
@ -71,8 +71,11 @@ class DraftBoardCommands(commands.Cog):
|
|||||||
await interaction.followup.send(embed=embed, ephemeral=True)
|
await interaction.followup.send(embed=embed, ephemeral=True)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Get sheet URL
|
||||||
|
sheet_url = config.get_draft_sheet_url(config.sba_season)
|
||||||
|
|
||||||
# Create draft board embed
|
# Create draft board embed
|
||||||
embed = await create_draft_board_embed(round_number, picks)
|
embed = await create_draft_board_embed(round_number, picks, sheet_url)
|
||||||
await interaction.followup.send(embed=embed)
|
await interaction.followup.send(embed=embed)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -136,13 +136,17 @@ class DraftStatusCommands(commands.Cog):
|
|||||||
if roster and roster.get('active'):
|
if roster and roster.get('active'):
|
||||||
team_roster_swar = roster['active'].get('WARa')
|
team_roster_swar = roster['active'].get('WARa')
|
||||||
|
|
||||||
|
# Get sheet URL
|
||||||
|
sheet_url = config.get_draft_sheet_url(config.sba_season)
|
||||||
|
|
||||||
# Create on the clock embed
|
# Create on the clock embed
|
||||||
embed = await create_on_the_clock_embed(
|
embed = await create_on_the_clock_embed(
|
||||||
current_pick,
|
current_pick,
|
||||||
draft_data,
|
draft_data,
|
||||||
recent_picks,
|
recent_picks,
|
||||||
upcoming_picks,
|
upcoming_picks,
|
||||||
team_roster_swar
|
team_roster_swar,
|
||||||
|
sheet_url
|
||||||
)
|
)
|
||||||
|
|
||||||
await interaction.followup.send(embed=embed)
|
await interaction.followup.send(embed=embed)
|
||||||
|
|||||||
@ -136,7 +136,7 @@ class BotConfig(BaseSettings):
|
|||||||
# Default sheet IDs (hardcoded as fallback)
|
# Default sheet IDs (hardcoded as fallback)
|
||||||
default_keys = {
|
default_keys = {
|
||||||
12: "1OF-sAFykebc_2BrcYCgxCR-4rJo0GaNmTstagV-PMBU",
|
12: "1OF-sAFykebc_2BrcYCgxCR-4rJo0GaNmTstagV-PMBU",
|
||||||
# Season 13+ will be added here as sheets are created
|
13: "1vWJfvuz9jN5BU2ZR0X0oC9BAVr_R8o-dWZsF2KXQMsE"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check environment variable first (allows runtime override)
|
# Check environment variable first (allows runtime override)
|
||||||
|
|||||||
@ -425,6 +425,9 @@ class DraftMonitorTask:
|
|||||||
sorted_players = sorted(all_players, key=lambda p: p.wara if p.wara else 0.0, reverse=True)
|
sorted_players = sorted(all_players, key=lambda p: p.wara if p.wara else 0.0, reverse=True)
|
||||||
top_roster_players = sorted_players[:5]
|
top_roster_players = sorted_players[:5]
|
||||||
|
|
||||||
|
# Get sheet URL
|
||||||
|
sheet_url = config.get_draft_sheet_url(config.sba_season)
|
||||||
|
|
||||||
# Create and send the embed
|
# Create and send the embed
|
||||||
embed = await create_on_clock_announcement_embed(
|
embed = await create_on_clock_announcement_embed(
|
||||||
current_pick=next_pick,
|
current_pick=next_pick,
|
||||||
@ -432,7 +435,8 @@ class DraftMonitorTask:
|
|||||||
recent_picks=recent_picks if recent_picks else [],
|
recent_picks=recent_picks if recent_picks else [],
|
||||||
roster_swar=roster_swar,
|
roster_swar=roster_swar,
|
||||||
cap_limit=cap_limit,
|
cap_limit=cap_limit,
|
||||||
top_roster_players=top_roster_players
|
top_roster_players=top_roster_players,
|
||||||
|
sheet_url=sheet_url
|
||||||
)
|
)
|
||||||
|
|
||||||
# Mention the team's GM if available
|
# Mention the team's GM if available
|
||||||
|
|||||||
@ -23,7 +23,8 @@ async def create_on_the_clock_embed(
|
|||||||
draft_data: DraftData,
|
draft_data: DraftData,
|
||||||
recent_picks: List[DraftPick],
|
recent_picks: List[DraftPick],
|
||||||
upcoming_picks: List[DraftPick],
|
upcoming_picks: List[DraftPick],
|
||||||
team_roster_swar: Optional[float] = None
|
team_roster_swar: Optional[float] = None,
|
||||||
|
sheet_url: Optional[str] = None
|
||||||
) -> discord.Embed:
|
) -> discord.Embed:
|
||||||
"""
|
"""
|
||||||
Create "on the clock" embed showing current pick info.
|
Create "on the clock" embed showing current pick info.
|
||||||
@ -34,6 +35,7 @@ async def create_on_the_clock_embed(
|
|||||||
recent_picks: List of recent draft picks
|
recent_picks: List of recent draft picks
|
||||||
upcoming_picks: List of upcoming draft picks
|
upcoming_picks: List of upcoming draft picks
|
||||||
team_roster_swar: Current team sWAR (optional)
|
team_roster_swar: Current team sWAR (optional)
|
||||||
|
sheet_url: Optional Google Sheets URL for draft tracking
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Discord embed with pick information
|
Discord embed with pick information
|
||||||
@ -100,6 +102,14 @@ async def create_on_the_clock_embed(
|
|||||||
inline=False
|
inline=False
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Draft Sheet link
|
||||||
|
if sheet_url:
|
||||||
|
embed.add_field(
|
||||||
|
name="📊 Draft Sheet",
|
||||||
|
value=f"[View Full Board]({sheet_url})",
|
||||||
|
inline=False
|
||||||
|
)
|
||||||
|
|
||||||
# Add footer
|
# Add footer
|
||||||
if current_pick.is_traded:
|
if current_pick.is_traded:
|
||||||
embed.set_footer(text="📝 This pick was traded")
|
embed.set_footer(text="📝 This pick was traded")
|
||||||
@ -296,7 +306,8 @@ async def create_draft_list_embed(
|
|||||||
|
|
||||||
async def create_draft_board_embed(
|
async def create_draft_board_embed(
|
||||||
round_num: int,
|
round_num: int,
|
||||||
picks: List[DraftPick]
|
picks: List[DraftPick],
|
||||||
|
sheet_url: Optional[str] = None
|
||||||
) -> discord.Embed:
|
) -> discord.Embed:
|
||||||
"""
|
"""
|
||||||
Create draft board embed showing all picks in a round.
|
Create draft board embed showing all picks in a round.
|
||||||
@ -304,6 +315,7 @@ async def create_draft_board_embed(
|
|||||||
Args:
|
Args:
|
||||||
round_num: Round number
|
round_num: Round number
|
||||||
picks: List of DraftPick for this round
|
picks: List of DraftPick for this round
|
||||||
|
sheet_url: Optional Google Sheets URL for draft tracking
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Discord embed with draft board
|
Discord embed with draft board
|
||||||
@ -341,6 +353,14 @@ async def create_draft_board_embed(
|
|||||||
inline=False
|
inline=False
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Draft Sheet link
|
||||||
|
if sheet_url:
|
||||||
|
embed.add_field(
|
||||||
|
name="Draft Sheet",
|
||||||
|
value=f"[View Full Board]({sheet_url})",
|
||||||
|
inline=False
|
||||||
|
)
|
||||||
|
|
||||||
embed.set_footer(text="Use /draft-board [round] to view different rounds")
|
embed.set_footer(text="Use /draft-board [round] to view different rounds")
|
||||||
|
|
||||||
return embed
|
return embed
|
||||||
@ -435,7 +455,8 @@ async def create_pick_success_embed(
|
|||||||
|
|
||||||
async def create_admin_draft_info_embed(
|
async def create_admin_draft_info_embed(
|
||||||
draft_data: DraftData,
|
draft_data: DraftData,
|
||||||
current_pick: Optional[DraftPick] = None
|
current_pick: Optional[DraftPick] = None,
|
||||||
|
sheet_url: Optional[str] = None
|
||||||
) -> discord.Embed:
|
) -> discord.Embed:
|
||||||
"""
|
"""
|
||||||
Create detailed admin view of draft status.
|
Create detailed admin view of draft status.
|
||||||
@ -443,6 +464,7 @@ async def create_admin_draft_info_embed(
|
|||||||
Args:
|
Args:
|
||||||
draft_data: Current draft configuration
|
draft_data: Current draft configuration
|
||||||
current_pick: Current DraftPick (optional)
|
current_pick: Current DraftPick (optional)
|
||||||
|
sheet_url: Optional Google Sheets URL for draft tracking
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Discord embed with admin information
|
Discord embed with admin information
|
||||||
@ -532,6 +554,14 @@ async def create_admin_draft_info_embed(
|
|||||||
inline=False
|
inline=False
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Draft Sheet link
|
||||||
|
if sheet_url:
|
||||||
|
embed.add_field(
|
||||||
|
name="Draft Sheet",
|
||||||
|
value=f"[View Sheet]({sheet_url})",
|
||||||
|
inline=False
|
||||||
|
)
|
||||||
|
|
||||||
embed.set_footer(text="Use /draft-admin to modify draft settings")
|
embed.set_footer(text="Use /draft-admin to modify draft settings")
|
||||||
|
|
||||||
return embed
|
return embed
|
||||||
@ -543,7 +573,8 @@ async def create_on_clock_announcement_embed(
|
|||||||
recent_picks: List[DraftPick],
|
recent_picks: List[DraftPick],
|
||||||
roster_swar: float,
|
roster_swar: float,
|
||||||
cap_limit: float,
|
cap_limit: float,
|
||||||
top_roster_players: List[Player]
|
top_roster_players: List[Player],
|
||||||
|
sheet_url: Optional[str] = None
|
||||||
) -> discord.Embed:
|
) -> discord.Embed:
|
||||||
"""
|
"""
|
||||||
Create announcement embed for when a team is on the clock.
|
Create announcement embed for when a team is on the clock.
|
||||||
@ -560,6 +591,7 @@ async def create_on_clock_announcement_embed(
|
|||||||
roster_swar: Team's current total sWAR
|
roster_swar: Team's current total sWAR
|
||||||
cap_limit: Team's salary cap limit
|
cap_limit: Team's salary cap limit
|
||||||
top_roster_players: Top 5 most expensive players on the team's roster
|
top_roster_players: Top 5 most expensive players on the team's roster
|
||||||
|
sheet_url: Optional Google Sheets URL for draft tracking
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Discord embed announcing team is on the clock
|
Discord embed announcing team is on the clock
|
||||||
@ -630,6 +662,14 @@ async def create_on_clock_announcement_embed(
|
|||||||
inline=False
|
inline=False
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Draft Sheet link
|
||||||
|
if sheet_url:
|
||||||
|
embed.add_field(
|
||||||
|
name="📊 Draft Sheet",
|
||||||
|
value=f"[View Full Board]({sheet_url})",
|
||||||
|
inline=False
|
||||||
|
)
|
||||||
|
|
||||||
# Footer with pick info
|
# Footer with pick info
|
||||||
if current_pick.is_traded:
|
if current_pick.is_traded:
|
||||||
embed.set_footer(text="📝 This pick was acquired via trade")
|
embed.set_footer(text="📝 This pick was acquired via trade")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user