fix: daily check-in interaction migration + paperdex dupe detection #107

Merged
Claude merged 2 commits from fix/checkin-and-paperdex-fixes into main 2026-03-23 04:43:05 +00:00
2 changed files with 16 additions and 9 deletions

View File

@ -567,12 +567,11 @@ class Economy(commands.Cog):
check_count = check_ins["count"] % 5
# TODO: complete the migration to an interaction
# 2nd, 4th, and 5th check-ins
if check_count == 0 or check_count % 2 == 0:
# Every fifth check-in
if check_count == 0:
greeting = await interaction.edit_original_response(
await interaction.edit_original_response(
content=f"Hey, you just earned a Standard pack of cards!"
)
pack_channel = get_channel(interaction, "pack-openings")
@ -587,7 +586,7 @@ class Economy(commands.Cog):
# Every second and fourth check-in
else:
greeting = await interaction.edit_original_response(
await interaction.edit_original_response(
content=f"Hey, you just earned a player card!"
)
pack_channel = interaction.channel
@ -622,7 +621,7 @@ class Economy(commands.Cog):
p_query["packs"], extra_val=check_ins["count"]
)
if not pack_ids:
await greeting.edit(
await interaction.edit_original_response(
content=f"I was not able to create these cards {await get_emoji(interaction, 'slight_frown')}"
)
return

View File

@ -181,11 +181,19 @@ async def get_card_embeds(card, include_stats=False) -> list:
name="Collected By", value=f"{count} team{'s' if count != 1 else ''}"
)
# TODO: check for dupes with the included paperdex data
# if card['team']['lname'] != 'Paper Dynasty':
# team_dex = await db_get('cards', params=[("player_id", card["player"]["player_id"]), ('team_id', card['team']['id'])])
# count = 1 if not team_dex['count'] else team_dex['count']
# embed.add_field(name='# Dupes', value=f'{count - 1} dupe{"s" if count - 1 != 1 else ""}')
if card["team"]["lname"] != "Paper Dynasty":
team_dex = await db_get(
Outdated
Review

db_get defaults to none_okay=True, meaning it returns None on any non-200 API response. team_dex['count'] on the next line will raise a TypeError if the cards API is unavailable or returns an error. Wrap this block in if team_dex is not None: to prevent crashing embed generation for all non-Paper-Dynasty cards.

`db_get` defaults to `none_okay=True`, meaning it returns `None` on any non-200 API response. `team_dex['count']` on the next line will raise a `TypeError` if the cards API is unavailable or returns an error. Wrap this block in `if team_dex is not None:` to prevent crashing embed generation for all non-Paper-Dynasty cards.
"cards",
params=[
("player_id", card["player"]["player_id"]),
("team_id", card["team"]["id"]),
],
)
if team_dex is not None:
dupe_count = max(0, team_dex["count"] - 1)
embed.add_field(
name="Dupes", value=f"{dupe_count} dupe{'s' if dupe_count != 1 else ''}"
)
# embed.add_field(name='Team', value=f'{card["player"]["mlbclub"]}')
if card["player"]["franchise"] != "Pokemon":