From 59af134904a88e062f5d89b119630665fbee0460 Mon Sep 17 00:00:00 2001 From: UnCLAS-Prommer Date: Tue, 1 Jul 2025 16:31:56 +0800 Subject: [PATCH] issue #27, thanks pr #45 --- src/__init__.py | 1 + src/send_handler.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/src/__init__.py b/src/__init__.py index e5c2d6a..bc1f63b 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -12,6 +12,7 @@ class CommandType(Enum): GROUP_KICK = "set_group_kick" # 踢出群聊 SEND_POKE = "send_poke" # 戳一戳 DELETE_MSG = "delete_msg" # 撤回消息 + AI_VOICE_SEND = "send_group_ai_record" # 发送群AI语音 def __str__(self) -> str: return self.value diff --git a/src/send_handler.py b/src/send_handler.py index e02f1b1..e727619 100644 --- a/src/send_handler.py +++ b/src/send_handler.py @@ -108,6 +108,8 @@ class SendHandler: command, args_dict = self.handle_poke_command(seg_data.get("args"), group_info) case CommandType.DELETE_MSG.name: command, args_dict = self.delete_msg_command(seg_data.get("args")) + case CommandType.AI_VOICE_SEND.name: + command, args_dict = self.handle_ai_voice_send_command(seg_data.get("args"), group_info) case _: logger.error(f"未知命令: {command_name}") return @@ -378,6 +380,32 @@ class SendHandler: }, ) + def handle_ai_voice_send_command(self, args: Dict[str, Any], group_info: GroupInfo) -> Tuple[str, Dict[str, Any]]: + """ + 处理AI语音发送命令的逻辑。 + 并返回 NapCat 兼容的 (action, params) 元组。 + """ + if not group_info or not group_info.group_id: + raise ValueError("AI语音发送命令必须在群聊上下文中使用") + if not args: + raise ValueError("AI语音发送命令缺少参数") + + group_id: int = int(group_info.group_id) + character_id = args.get("character") + text_content = args.get("text") + + if not character_id or not text_content: + raise ValueError(f"AI语音发送命令参数不完整: character='{character_id}', text='{text_content}'") + + return ( + CommandType.AI_VOICE_SEND.value, + { + "group_id": group_id, + "text": text_content, + "character": character_id, + }, + ) + async def send_message_to_napcat(self, action: str, params: dict) -> dict: request_uuid = str(uuid.uuid4()) payload = json.dumps({"action": action, "params": params, "echo": request_uuid})