diff --git a/plugins/game_task/main.py b/plugins/game_task/main.py index f265eba..0f9ae2f 100644 --- a/plugins/game_task/main.py +++ b/plugins/game_task/main.py @@ -109,7 +109,6 @@ class GameTaskPlugin(MessagePluginInterface): return 0 @plugin_stats_decorator(plugin_name="百科问答") - @points_reward_decorator(calculate_game_points, "game", "百科答题奖励") def process_message(self, message: Dict[str, Any]) -> Tuple[bool, Optional[str]]: """处理消息""" content = str(message.get("content", "")).strip() @@ -137,10 +136,8 @@ class GameTaskPlugin(MessagePluginInterface): self._handle_get_task(sender, roomid) return True, "获取任务成功" elif command == "/a": - # 修改这里,不要直接传递 message 对象 - content = str(message.get("content", "")).strip() - points = self._handle_submit_answer(content, sender, roomid) - return True, str(points) + # 这里传递整个消息对象给处理方法 + return self._handle_submit_answer(message) elif command == "/r": self._handle_show_rank(sender, roomid) return True, "显示排行榜成功" @@ -252,9 +249,13 @@ class GameTaskPlugin(MessagePluginInterface): sender ) - def _handle_submit_answer(self, content: str, sender: str, roomid: str) -> int: + @points_reward_decorator(calculate_game_points, "game", "百科答题奖励") + def _handle_submit_answer(self, message: Dict[str, Any]) -> Tuple[bool, Optional[str]]: """处理提交答案请求""" try: + content = str(message.get("content", "")).strip() + sender = message.get("sender") + roomid = message.get("roomid", "") parts = content.split(" ", 2) if len(parts) < 3: self.message_util.send_text_msg( @@ -264,7 +265,7 @@ class GameTaskPlugin(MessagePluginInterface): (roomid if roomid else sender), sender ) - return 0 + return False, "0" task_id = parts[1] answer = parts[2] @@ -278,7 +279,7 @@ class GameTaskPlugin(MessagePluginInterface): (roomid if roomid else sender), sender ) - return 0 + return False, "0" player_name = player['player_name'] @@ -290,7 +291,7 @@ class GameTaskPlugin(MessagePluginInterface): (roomid if roomid else sender), sender ) - return 0 + return False, "0" active_task_id = int(task_id) @@ -304,7 +305,7 @@ class GameTaskPlugin(MessagePluginInterface): (roomid if roomid else sender), sender ) - return 0 + return False, "0" if task_data['status'] == 'completed': self.message_util.send_text_msg( @@ -314,7 +315,7 @@ class GameTaskPlugin(MessagePluginInterface): (roomid if roomid else sender), sender ) - return 0 + return False, "0" question = task_data['question'] correct_answer_db = task_data['answer'].lower() @@ -376,15 +377,10 @@ class GameTaskPlugin(MessagePluginInterface): sender ) - return points + return True, str(points) except Exception as e: self.LOG.error(f"提交答案出错: {e}") - self.message_util.send_text_msg( - f"😔 提交答案出错,请稍后再试!", - (roomid if roomid else sender), - sender - ) - return 0 + return False, "0" def _handle_show_rank(self, sender: str, roomid: str) -> None: """处理显示排行榜请求"""