From 6f05ca98f1240a5f20311e8277dcc37605ac06be Mon Sep 17 00:00:00 2001 From: ninemine <1371605831@qq.com> Date: Fri, 31 Oct 2025 10:30:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=86=92=E9=99=A9=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E5=90=8E=E4=B8=8D=E5=9B=9E=E6=94=B6=E5=A5=96=E5=8A=B1?= =?UTF-8?q?=E5=B0=B1=E8=BF=9B=E8=A1=8C=E7=82=BC=E9=87=91=E4=BC=9A=E4=B8=A2?= =?UTF-8?q?=E5=A4=B1=E5=A5=96=E5=8A=B1=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2025-10-29_2_complete-adventure-game.md | 22 +++++++++++++++++-- games/alchemy.py | 4 ++-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/.tasks/2025-10-29_2_complete-adventure-game.md b/.tasks/2025-10-29_2_complete-adventure-game.md index 20b5c24..c334576 100644 --- a/.tasks/2025-10-29_2_complete-adventure-game.md +++ b/.tasks/2025-10-29_2_complete-adventure-game.md @@ -122,6 +122,24 @@ WPSBotGame/ - 阻碍因素:无 - 状态:成功 +## 2025-10-31_10:27:59 +- 已修改: + - games/alchemy.py(修复冒险任务完成后自动删除状态导致奖励丢失的bug) +- 更改: + 1. **Bug修复**:修复冒险任务完成后奖励丢失问题 + - **问题**:在 `_perform_alchemy` 中,当检测到冒险任务已完成时,代码会自动删除冒险状态(`self.db.delete_game_state`),但没有发放奖励,导致用户奖励丢失 + - **修复**:移除自动删除逻辑,改为提示用户先使用 `.adventure` 回收奖励 + - **修改前**:冒险完成后自动删除状态,允许炼金(导致奖励丢失) + - **修改后**:冒险完成后提示用户先回收奖励,不允许炼金,确保奖励只能通过 `.adventure` 命令回收 + 2. **行为变更**: + - 冒险进行中:提示剩余时间,不允许炼金(保持不变) + - 冒险已完成:提示先回收奖励,不允许炼金(修复后) + - 用户使用 `.adventure`:发放奖励并删除状态(保持不变) + - 状态已删除:可以正常炼金(保持不变) +- 原因:修复冒险任务完成后自动删除状态导致奖励丢失的严重bug,确保用户必须先主动回收奖励才能继续其他操作 +- 阻碍因素:无 +- 状态:成功 + # 详细实施记录 ## 文件修改清单 @@ -150,7 +168,7 @@ WPSBotGame/ - 使用 `get_game_state(0, user_id, 'adventure')` 查询状态 - 如果存在状态: * 计算剩余时间 - * 如果已完成:自动删除状态,允许继续 + * 如果已完成:提示用户先使用 `.adventure` 回收奖励,不允许炼金(2025-10-31修复:避免奖励丢失,移除自动删除逻辑) * 如果未完成:返回错误消息,显示剩余时间(X分Y秒) - 异常处理:捕获状态数据异常,自动清理损坏状态 @@ -206,7 +224,7 @@ state_data = { ### 游戏互斥机制 - 炼金前检查:查询冒险状态 - 如果冒险进行中:返回错误,显示剩余时间 -- 如果冒险已完成:自动清理状态,允许炼金 +- 如果冒险已完成:提示用户先使用 `.adventure` 回收奖励,不允许炼金(修复后:确保奖励不会丢失) - 状态异常:自动清理,允许继续操作 # 最终审查 diff --git a/games/alchemy.py b/games/alchemy.py index 4209bc0..3ae235c 100644 --- a/games/alchemy.py +++ b/games/alchemy.py @@ -92,9 +92,9 @@ class AlchemyGame(BaseGame): end_time = start_time + cost_time * 60 remaining_seconds = end_time - current_time - # 如果冒险已完成,自动清理状态,允许炼金 + # 如果冒险已完成,提示用户先回收奖励,不允许炼金 if remaining_seconds <= 0: - self.db.delete_game_state(0, user_id, 'adventure') + return f"❌ 你有待回收的冒险奖励!\n\n💡 请先使用 `.adventure` 回收冒险奖励后再进行炼金。" else: # 冒险未完成,返回错误提示 remaining_minutes = remaining_seconds // 60