Skip to content

Commit cc380cf

Browse files
authored
Merge pull request #118 from iqnite/issue116
Require explicit interaction argument for game.send
2 parents 2f4861a + 0101675 commit cc380cf

File tree

13 files changed

+91
-88
lines changed

13 files changed

+91
-88
lines changed

eggsplode/cards/attegg.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from eggsplode.core import Game
1212

1313

14-
async def attegg(game: "Game", _):
14+
async def attegg(game: "Game", interaction: discord.Interaction):
1515
view = NopeView(
1616
game=game,
1717
message=format_message(
@@ -23,7 +23,7 @@ async def attegg(game: "Game", _):
2323
target_player_id=game.next_player_id,
2424
ok_callback_action=lambda _: attegg_finish(game),
2525
)
26-
await game.send(view=view)
26+
await game.send(view, interaction)
2727

2828

2929
async def attegg_finish(game: "Game", target_player_id=None, turns: int = 3):
@@ -35,7 +35,9 @@ async def attegg_finish(game: "Game", target_player_id=None, turns: int = 3):
3535
await game.events.turn_end()
3636

3737

38-
async def targeted_attegg_begin(game: "Game", _, target_player_id: int):
38+
async def targeted_attegg_begin(
39+
game: "Game", interaction: discord.Interaction, target_player_id: int
40+
):
3941
view = NopeView(
4042
game,
4143
message=format_message(
@@ -47,7 +49,7 @@ async def targeted_attegg_begin(game: "Game", _, target_player_id: int):
4749
target_player_id=target_player_id,
4850
ok_callback_action=lambda _: attegg_finish(game, target_player_id),
4951
)
50-
await game.send(view=view)
52+
await game.send(view, interaction)
5153

5254

5355
async def targeted_attegg(game: "Game", interaction: discord.Interaction):

eggsplode/cards/bombs.py

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ def __init__(self, winner):
2929
)
3030

3131

32-
async def game_over(game: "Game", _):
33-
await game.send(view=GameOverView(game.players[0]))
32+
async def game_over(game: "Game", interaction: discord.Interaction | None):
33+
await game.send(GameOverView(game.players[0]), interaction)
3434
await game.events.game_end()
3535

3636

@@ -41,7 +41,7 @@ async def eggsplode(
4141
game.current_player_hand.remove("defuse")
4242
if timed_out:
4343
game.deck.insert(random.randint(0, len(game.deck)), "eggsplode")
44-
await game.send(view=TextView("defused", game.current_player_id))
44+
await game.send(TextView("defused", game.current_player_id), interaction)
4545
return
4646
view = DefuseView(
4747
game,
@@ -54,11 +54,12 @@ async def eggsplode(
5454
game.remove_player(prev_player)
5555
game.remaining_turns = 0
5656
await game.send(
57-
view=TextView(
57+
TextView(
5858
"eggsploded",
5959
prev_player,
6060
format_message("death_messages", random_from_list=True),
61-
)
61+
),
62+
interaction,
6263
)
6364
if len(game.players) == 1:
6465
await game_over(game, interaction)
@@ -68,12 +69,12 @@ async def eggsplode(
6869

6970

7071
async def defuse_finish(game: "Game"):
71-
await game.send(view=TextView("defused", game.current_player_id))
72+
await game.send(TextView("defused", game.current_player_id), None)
7273
await game.events.turn_end()
7374

7475

7576
async def radioeggtive_finish(game: "Game"):
76-
await game.send(view=TextView("radioeggtive", game.current_player_id))
77+
await game.send(TextView("radioeggtive", game.current_player_id), None)
7778
await game.events.turn_end()
7879

7980

@@ -82,7 +83,7 @@ async def radioeggtive(
8283
):
8384
if timed_out:
8485
game.deck.insert(random.randint(0, len(game.deck)), "radioeggtive_face_up")
85-
await game.send(view=TextView("radioeggtive", game.current_player_id))
86+
await game.send(TextView("radioeggtive", game.current_player_id), interaction)
8687
else:
8788
view = DefuseView(
8889
game,
@@ -100,11 +101,12 @@ async def radioeggtive_face_up(
100101
game.remove_player(prev_player)
101102
game.remaining_turns = 0
102103
await game.send(
103-
view=TextView(
104+
TextView(
104105
"radioeggtive_face_up",
105106
prev_player,
106107
format_message("death_messages", random_from_list=True),
107-
)
108+
),
109+
interaction,
108110
)
109111
if len(game.players) == 1:
110112
await game_over(game, interaction)
@@ -113,30 +115,37 @@ async def radioeggtive_face_up(
113115
await game.events.turn_end()
114116

115117

116-
async def eggsperiment_finish(game: "Game", _, target_player_id: int, pair=False):
118+
async def eggsperiment_finish(
119+
game: "Game",
120+
interaction: discord.Interaction | None,
121+
target_player_id: int,
122+
pair=False,
123+
):
117124
if "defuse" in game.hands[target_player_id]:
118125
game.hands[target_player_id].remove("defuse")
119126
await game.send(
120-
view=TextView(
127+
TextView(
121128
"eggsperiment_pair_defused" if pair else "eggsperiment_defused",
122129
game.current_player_id,
123130
target_player_id,
124131
),
132+
interaction,
125133
)
126134
else:
127135
await game.send(
128-
view=TextView(
136+
TextView(
129137
"eggsperiment_pair_eggsploded" if pair else "eggsperiment_eggsploded",
130138
game.current_player_id,
131139
target_player_id,
132140
format_message("death_messages", random_from_list=True),
133141
),
142+
interaction,
134143
)
135144
del game.players[game.players.index(target_player_id)]
136145
del game.hands[target_player_id]
137146
game.current_player = game.players.index(game.current_player_id)
138147
if len(game.players) == 1:
139-
await game_over(game, _)
148+
await game_over(game, interaction)
140149
return
141150
await game.events.action_end()
142151

@@ -160,5 +169,5 @@ async def eggsperiment(game: "Game", interaction: discord.Interaction):
160169
await eggsperiment_finish(game, interaction, players_with_eggsperiment[0])
161170
return
162171
game.current_player_hand.append("eggsperiment")
163-
await game.send(view=TextView("eggsperiment_exposed", game.current_player_id))
172+
await game.send(TextView("eggsperiment_exposed", game.current_player_id), interaction)
164173
await game.events.action_end()

eggsplode/cards/deck.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
from eggsplode.core import Game
1212

1313

14-
async def shuffle(game: "Game", _):
14+
async def shuffle(game: "Game", interaction: discord.Interaction):
1515
game.shuffle_deck()
16-
await game.send(view=TextView("shuffled", game.current_player_id))
16+
await game.send(TextView("shuffled", game.current_player_id), interaction)
1717
await game.events.action_end()
1818

1919

@@ -26,7 +26,7 @@ async def swap_top_bottom(game: "Game", interaction: discord.Interaction):
2626
await game.events.action_end()
2727
return
2828
game.deck[-1], game.deck[0] = game.deck[0], game.deck[-1]
29-
await game.send(view=TextView("swapped_top_bottom", game.current_player_id))
29+
await game.send(TextView("swapped_top_bottom", game.current_player_id), interaction)
3030
await game.events.action_end()
3131

3232

eggsplode/cards/future.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313

1414
async def see_future(game: "Game", interaction: discord.Interaction):
15-
await game.send(view=TextView("predicted", game.current_player_id))
15+
await game.send(TextView("predicted", game.current_player_id), interaction)
1616
await show_next_cards(interaction, game.deck)
1717
await game.events.action_end()
1818

@@ -34,8 +34,8 @@ async def show_next_cards(
3434
)
3535

3636

37-
async def alter_future_finish(game: "Game", _):
38-
await game.send(view=TextView("altered_future", game.action_player_id))
37+
async def alter_future_finish(game: "Game", interaction: discord.Interaction | None):
38+
await game.send(TextView("altered_future", game.action_player_id), interaction)
3939
await game.events.action_end()
4040

4141

@@ -135,11 +135,12 @@ async def view_cards(self, interaction: discord.Interaction):
135135

136136
async def share_future_finish(game: "Game"):
137137
await game.send(
138-
view=ShareFutureView(
138+
ShareFutureView(
139139
game.deck.copy(),
140140
game.current_player_id,
141141
game.next_player_id,
142-
)
142+
),
143+
None,
143144
)
144145
await game.events.action_end()
145146

eggsplode/cards/skip.py

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@
1111
from eggsplode.core import Game
1212

1313

14-
async def skip(game: "Game", _):
15-
await game.send(view=TextView("skipped", game.current_player_id))
14+
async def skip(game: "Game", interaction: discord.Interaction):
15+
await game.send(
16+
view=TextView("skipped", game.current_player_id), interaction=interaction
17+
)
1618
await game.events.turn_end()
1719

1820

@@ -22,26 +24,30 @@ async def draw_from_bottom(game: "Game", interaction: discord.Interaction):
2224
await game.events.turn_end()
2325

2426

25-
async def reverse(game: "Game", _):
27+
async def reverse(game: "Game", interaction: discord.Interaction):
2628
game.reverse()
27-
await game.send(view=TextView("reversed", game.current_player_id))
29+
await game.send(
30+
view=TextView("reversed", game.current_player_id), interaction=interaction
31+
)
2832
await game.events.turn_end()
2933

3034

31-
async def super_skip(game: "Game", _):
35+
async def super_skip(game: "Game", interaction: discord.Interaction):
3236
game.remaining_turns = 0
33-
await skip(game, _)
37+
await skip(game, interaction)
3438

3539

36-
async def bury_finish(game: "Game"):
37-
await game.send(view=TextView("buried", game.current_player_id))
40+
async def bury_finish(game: "Game", interaction: discord.Interaction):
41+
await game.send(
42+
view=TextView("buried", game.current_player_id), interaction=interaction
43+
)
3844
await game.events.turn_end()
3945

4046

4147
async def bury(game: "Game", interaction: discord.Interaction):
4248
view = DefuseView(
4349
game,
44-
lambda: bury_finish(game),
50+
lambda: bury_finish(game, interaction),
4551
card=game.deck.pop(),
4652
)
4753
await interaction.respond(view=view, ephemeral=True)
@@ -77,9 +83,9 @@ def __init__(self, game: "Game"):
7783

7884
async def finish(self, interaction: discord.Interaction | None = None):
7985
if not interaction:
80-
interaction = self.game.anchor_interaction
86+
interaction = self.game.last_interaction
8187
if not interaction:
82-
raise ValueError("No anchor interaction set for the game.")
88+
raise ValueError("No last interaction set for the game.")
8389
_, hold = await self.game.draw_from(interaction)
8490
self.stop()
8591
if hold:
@@ -89,7 +95,10 @@ async def dig_deeper(self, interaction: discord.Interaction):
8995
self.stop()
9096
self.disable_all_items()
9197
await interaction.edit(view=self)
92-
await self.game.send(view=TextView("dug_deeper", self.game.current_player_id))
98+
await self.game.send(
99+
view=TextView("dug_deeper", self.game.current_player_id),
100+
interaction=interaction,
101+
)
93102
_, hold = await self.game.draw_from(interaction, index=-2)
94103
if hold:
95104
await self.game.events.turn_end()
@@ -103,5 +112,5 @@ async def dig_deeper(game: "Game", interaction: discord.Interaction):
103112
game.current_player_hand.append("dig_deeper")
104113
await game.events.action_end()
105114
return
106-
game.anchor_interaction = interaction
115+
game.last_interaction = interaction
107116
await interaction.respond(view=DigDeeperView(game), ephemeral=True)

eggsplode/cards/steal.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,17 @@ async def food_combo_finish(
2121
target_hand = game.hands[target_player_id]
2222
if not target_hand:
2323
await game.send(
24-
view=TextView("no_cards_to_steal", game.current_player_id, target_player_id)
24+
TextView("no_cards_to_steal", game.current_player_id, target_player_id),
25+
interaction,
2526
)
2627
await game.events.action_end()
2728
return
2829
stolen_card = random.choice(target_hand)
2930
game.hands[target_player_id].remove(stolen_card)
3031
game.current_player_hand.append(stolen_card)
3132
await game.send(
32-
view=TextView("stolen_card_public", game.current_player_id, target_player_id)
33+
TextView("stolen_card_public", game.current_player_id, target_player_id),
34+
interaction,
3335
)
3436
try:
3537
await interaction.respond(
@@ -71,7 +73,7 @@ async def food_combo_begin(
7173
game, interaction, target_interaction, target_player_id
7274
),
7375
)
74-
await game.send(view=view)
76+
await game.send(view, interaction)
7577

7678

7779
async def food_combo(game: "Game", interaction: discord.Interaction, card: str):

eggsplode/cogs/eggsplode_game.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ async def play_card(self, ctx: discord.ApplicationContext, card: str | None = No
125125
ephemeral=True,
126126
)
127127
return
128-
game.anchor_interaction = ctx.interaction
128+
game.last_interaction = ctx.interaction
129129
await game.play_callback(ctx.interaction, card)
130130
else:
131131
await game.show_hand(ctx.interaction)

eggsplode/commands.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ async def create_game(self, interaction: discord.Interaction, config=None):
114114
),
115115
game_id=game_id,
116116
)
117-
game.anchor_interaction = interaction
117+
game.last_interaction = interaction
118118
self.logger.info("Game %s: Created.", game_id)
119119
view = StartGameView(game)
120120
await interaction.respond(view=view)

0 commit comments

Comments
 (0)