From 3d89dbf8f4e0d592d10c1d552e24373ff4e399f2 Mon Sep 17 00:00:00 2001 From: ninemine <1371605831@qq.com> Date: Mon, 10 Nov 2025 10:37:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=8B=BC=E4=BA=BA=E6=8A=95?= =?UTF-8?q?=E7=A5=A8bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .tasks/2025-11-03_2_werewolf-game.md | 16 ++++++++++++++++ games/werewolf.py | 16 ++++++++-------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/.tasks/2025-11-03_2_werewolf-game.md b/.tasks/2025-11-03_2_werewolf-game.md index c87c92d..4cf7bda 100644 --- a/.tasks/2025-11-03_2_werewolf-game.md +++ b/.tasks/2025-11-03_2_werewolf-game.md @@ -373,6 +373,22 @@ if game_type == 'werewolf': - 状态:未确认 +[2025-11-10_10:36:39] +- 已修改: + 1. games/werewolf.py - 修复狼人投票流程与阶段推进 + +- 更改: + 1. `_wolf_kill()` 读取 `wolf_votes` 时统一转换为整数键,存储与统计均使用整数 + 2. `_wolf_kill()`、`_seer_check()`、`_witch_save()`、`_witch_poison()`、`_witch_pass()` 中的 `_advance_phase` 调用改为 `await` + +- 原因: + 修复狼人投票完成后仍判定未投票、平安夜提示错误及阶段推进信息显示 `` 的问题 + +- 阻碍因素: + 无 + +- 状态:未确认 + # 最终审查 待审查阶段完成... diff --git a/games/werewolf.py b/games/werewolf.py index 7d2005a..2954af7 100644 --- a/games/werewolf.py +++ b/games/werewolf.py @@ -744,8 +744,8 @@ class WerewolfGame(BaseGame): # 记录投票(允许改票) wolf_votes = state_data.get('wolf_votes', {}) - wolf_votes = {str(k): v for k, v in wolf_votes.items()} - wolf_votes[str(player['user_id'])] = target_id + wolf_votes = {int(k): v for k, v in wolf_votes.items()} + wolf_votes[player['user_id']] = target_id state_data['wolf_votes'] = wolf_votes self._save_game_state(chat_id, state_data) @@ -756,7 +756,7 @@ class WerewolfGame(BaseGame): alive_wolves.append(p['user_id']) # 检查是否所有狼人都已投票 - voted_wolves = {int(k) for k in wolf_votes.keys()} + voted_wolves = set(wolf_votes.keys()) all_wolves = set(alive_wolves) if not all_wolves.issubset(voted_wolves): @@ -794,7 +794,7 @@ class WerewolfGame(BaseGame): await self._send_to_player(p['user_id'], 空刀_msg, sender="系统") # 自动推进到下一阶段 - next_phase_msg = self._advance_phase(chat_id, state_data) + next_phase_msg = await self._advance_phase(chat_id, state_data) return f"✅ 狼人投票完成{next_phase_msg}" @@ -831,7 +831,7 @@ class WerewolfGame(BaseGame): await self._send_to_player(p['user_id'], vote_msg, sender="系统") # 自动推进到下一阶段 - next_phase_msg = self._advance_phase(chat_id, state_data) + next_phase_msg = await self._advance_phase(chat_id, state_data) # 群消息不透露击杀目标 return f"✅ 狼人投票完成{next_phase_msg}" @@ -880,7 +880,7 @@ class WerewolfGame(BaseGame): await self._send_to_player(player['user_id'], msg, sender="系统") # 自动推进到下一阶段 - next_phase_msg = self._advance_phase(chat_id, state_data) + next_phase_msg = await self._advance_phase(chat_id, state_data) return f"✅ 验人成功!已私聊发送结果{next_phase_msg}" @@ -925,7 +925,7 @@ class WerewolfGame(BaseGame): self._save_game_state(chat_id, state_data) # 自动推进到下一阶段 - next_phase_msg = self._advance_phase(chat_id, state_data) + next_phase_msg = await self._advance_phase(chat_id, state_data) return f"✅ 救人成功:救了{target_id}号玩家{next_phase_msg}" @@ -1017,7 +1017,7 @@ class WerewolfGame(BaseGame): return f"❌ 当前不是女巫行动阶段!当前阶段:{self._get_phase_description(current_phase)['name']}" # 自动推进到下一阶段(使用 game_chat_id) - next_phase_msg = self._advance_phase(game_chat_id, state_data) + next_phase_msg = await self._advance_phase(game_chat_id, state_data) return f"✅ 女巫选择跳过,不行动{next_phase_msg}"