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

@@ -157,7 +157,7 @@ def register_dev_member_commands(
await interaction.response.defer()
try:
sheets.refresh()
await sheets.refresh()
except Exception as e:
await interaction.followup.send(S.ERR["sheet_error"].format(error=e), ephemeral=True)
return
@@ -177,7 +177,7 @@ def register_dev_member_commands(
return
try:
data = sheets.refresh()
data = await sheets.refresh()
except Exception as e:
await interaction.followup.send(S.ERR["sheet_error"].format(error=e), ephemeral=True)
return
@@ -195,7 +195,7 @@ def register_dev_member_commands(
guild.members,
)
if guild_member:
sheets.set_user_id(discord_name, guild_member.id)
await sheets.set_user_id(discord_name, guild_member.id)
ids_filled += 1
data = sheets.get_cache()
@@ -243,7 +243,7 @@ def register_dev_member_commands(
if sync_updates:
try:
sheets.batch_set_synced(sync_updates)
await sheets.batch_set_synced(sync_updates)
except Exception as e:
log.error("/check batch_set_synced failed: %s", e)

View File

@@ -23,7 +23,7 @@ async def run_birthday_daily(
return
try:
data = sheets.refresh()
data = await sheets.refresh()
except Exception as e:
log.error("Birthday task: sheet refresh failed: %s", e)
data = sheets.get_cache()
@@ -68,13 +68,13 @@ async def handle_member_join(
log.info("Member joined: %s (ID: %s)", member, member.id)
if not sheets.get_cache():
sheets.refresh()
await sheets.refresh()
result = await sync_member(member, member.guild)
if result.not_found:
try:
sheets.add_new_member_row(member.name, member.id)
await sheets.add_new_member_row(member.name, member.id)
log.info(
"%s not in sheet, added new row (Discord=%s, ID=%s)",
member,
@@ -86,7 +86,7 @@ async def handle_member_join(
return
log_sync_result(member, result)
sheets.set_synced(member.id, result.synced)
await sheets.set_synced(member.id, result.synced)
if result.birthday_soon and not has_announced_today(member.id):
await announce_birthday(member, bot)

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(