1
0
forked from sass/tipibot

More bug fixes

This commit is contained in:
Rene Arumetsa
2026-05-03 15:11:32 +03:00
parent d65173fbe9
commit 07e7f5e0b2
9 changed files with 295 additions and 90 deletions

View File

@@ -276,18 +276,16 @@ def register_economy_games_commands(
bet_line_a = bet_line_b = ""
if self.bet > 0:
if winner == "a":
res = await economy.do_give(self.player_b.id, self.player_a.id, self.bet)
await economy.do_rps_pvp_payout(self.player_a.id, self.bet)
bet_line_a = f"\n+{coin(self.bet)}"
bet_line_b = f"\n-{coin(self.bet)}"
elif winner == "b":
res = await economy.do_give(self.player_a.id, self.player_b.id, self.bet)
await economy.do_rps_pvp_payout(self.player_b.id, self.bet)
bet_line_a = f"\n-{coin(self.bet)}"
bet_line_b = f"\n+{coin(self.bet)}"
else:
res = {"ok": True}
if self.bet > 0 and winner is not None:
if res.get("ok"):
bet_line_a = f"\n{'+' if winner == 'a' else '-'}{coin(self.bet)}"
bet_line_b = f"\n{'+' if winner == 'b' else '-'}{coin(self.bet)}"
else:
bet_line_a = bet_line_b = S.RPS_UI["duel_broke"]
await economy.do_rps_pvp_refund(self.player_a.id, self.bet)
await economy.do_rps_pvp_refund(self.player_b.id, self.bet)
data_a = await economy.get_user(self.player_a.id)
data_b = await economy.get_user(self.player_b.id)
@@ -375,6 +373,9 @@ def register_economy_games_commands(
if self.game._resolved:
return
self.game._resolved = True
if self.game.bet > 0:
await economy.do_rps_pvp_refund(self.game.player_a.id, self.game.bet)
await economy.do_rps_pvp_refund(self.game.player_b.id, self.game.bet)
active_games.discard(self.game.player_a.id)
active_games.discard(self.game.player_b.id)
for item in self.children:
@@ -431,21 +432,33 @@ def register_economy_games_commands(
active_games.add(self.game.player_b.id)
if self.game.bet > 0:
data_a = await economy.get_user(self.game.player_a.id)
data_b = await economy.get_user(self.game.player_b.id)
for player, data in ((self.game.player_a, data_a), (self.game.player_b, data_b)):
if data["balance"] < self.game.bet:
embed = discord.Embed(
title=S.TITLE["rps_duel_cancel"],
description=S.RPS_UI["duel_insufficient"].format(mention=player.mention),
color=0xED4245,
)
await interaction.response.edit_message(embed=embed, view=None)
async with self.game._lock:
self.game._resolved = True
active_games.discard(self.game.player_a.id)
active_games.discard(self.game.player_b.id)
return
deposit_a = await economy.do_rps_pvp_deposit(self.game.player_a.id, self.game.bet)
if not deposit_a.get("ok"):
embed = discord.Embed(
title=S.TITLE["rps_duel_cancel"],
description=S.RPS_UI["duel_insufficient"].format(mention=self.game.player_a.mention),
color=0xED4245,
)
await interaction.response.edit_message(embed=embed, view=None)
async with self.game._lock:
self.game._resolved = True
active_games.discard(self.game.player_a.id)
active_games.discard(self.game.player_b.id)
return
deposit_b = await economy.do_rps_pvp_deposit(self.game.player_b.id, self.game.bet)
if not deposit_b.get("ok"):
await economy.do_rps_pvp_refund(self.game.player_a.id, self.game.bet)
embed = discord.Embed(
title=S.TITLE["rps_duel_cancel"],
description=S.RPS_UI["duel_insufficient"].format(mention=self.game.player_b.mention),
color=0xED4245,
)
await interaction.response.edit_message(embed=embed, view=None)
async with self.game._lock:
self.game._resolved = True
active_games.discard(self.game.player_a.id)
active_games.discard(self.game.player_b.id)
return
bet_str = S.RPS_UI["duel_active_bet"].format(bet=coin(self.game.bet)) if self.game.bet > 0 else ""
embed = discord.Embed(
@@ -479,6 +492,9 @@ def register_economy_games_commands(
if dm_failed:
async with self.game._lock:
self.game._resolved = True
if self.game.bet > 0:
await economy.do_rps_pvp_refund(self.game.player_a.id, self.game.bet)
await economy.do_rps_pvp_refund(self.game.player_b.id, self.game.bet)
active_games.discard(self.game.player_a.id)
active_games.discard(self.game.player_b.id)
embed = discord.Embed(