From dcce05c0194b3858a39128d88d11d8f60c5abd88 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Sat, 11 Feb 2023 12:27:59 +0800 Subject: [PATCH] fix message convert bug --- src/ZM/Annotation/AnnotationHandler.php | 1 + src/ZM/Context/Trait/BotActionTrait.php | 2 ++ src/ZM/Utils/MessageUtil.php | 11 ++++------- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/ZM/Annotation/AnnotationHandler.php b/src/ZM/Annotation/AnnotationHandler.php index 62591774..47c1940d 100644 --- a/src/ZM/Annotation/AnnotationHandler.php +++ b/src/ZM/Annotation/AnnotationHandler.php @@ -52,6 +52,7 @@ class AnnotationHandler */ public static function interrupt(mixed $return_var = null) { + logger()->debug('阻断事件!'); throw new InterruptException($return_var); } diff --git a/src/ZM/Context/Trait/BotActionTrait.php b/src/ZM/Context/Trait/BotActionTrait.php index 9250db4a..d6a374b1 100644 --- a/src/ZM/Context/Trait/BotActionTrait.php +++ b/src/ZM/Context/Trait/BotActionTrait.php @@ -72,9 +72,11 @@ trait BotActionTrait // 调用机器人连接发送 Action,首先试试看是不是 WebSocket if ($this->base_event instanceof WebSocketMessageEvent) { + logger()->debug('使用传入的 base_event 发送消息'); $result = $this->base_event->send(json_encode($a->jsonSerialize())); } if (!isset($result) && container()->has('ws.message.event')) { + logger()->debug('使用容器的 Event 发送消息'); $result = container()->get('ws.message.event')->send(json_encode($a->jsonSerialize())); } // 如果是 HTTP WebHook 的形式,那么直接调用 Response diff --git a/src/ZM/Utils/MessageUtil.php b/src/ZM/Utils/MessageUtil.php index 5214b9de..3fffb274 100644 --- a/src/ZM/Utils/MessageUtil.php +++ b/src/ZM/Utils/MessageUtil.php @@ -61,23 +61,20 @@ class MessageUtil return $arr; } - public static function convertToArr(MessageSegment|\Stringable|array|string $message) + public static function convertToArr(MessageSegment|\Stringable|array|string $message): array { if (is_array($message)) { foreach ($message as $k => $v) { if (is_string($v)) { - $message[$k] = new MessageSegment('text', ['text' => $v]); + $message[$k] = segment('text', ['text' => $v])->jsonSerialize(); } } return $message; } if ($message instanceof MessageSegment) { - return [$message]; + return [$message->jsonSerialize()]; } - if ($message instanceof \Stringable) { - return new MessageSegment('text', ['text' => $message->__toString()]); - } - return new MessageSegment('text', ['text' => $message]); + return [segment('text', ['text' => $message])->jsonSerialize()]; } /**