'text', 'data' => ['text' => $text]] : new MessageSegment('text', ['text' => $text]); } // 处理 CatCode $content = mb_substr($end, 4); $cq = explode(',', $content); $object_type = array_shift($cq); $object_params = []; foreach ($cq as $v) { $key = mb_strstr($v, '=', true); $object_params[$key] = CatCode::decode(mb_substr(mb_strstr($v, '='), 1), true); } $arr[] = $assoc_result ? ['type' => $object_type, 'data' => $object_params] : new MessageSegment($object_type, $object_params); $msg = mb_substr(mb_strstr($rear, ']'), 1); } if (($trim_msg = trim($msg)) !== '' || ($msg !== '' && !$ignore_space)) { $text = CatCode::decode($trim_text ? $trim_msg : $msg); $arr[] = $assoc_result ? ['type' => 'text', 'data' => ['text' => $text]] : new MessageSegment('text', ['text' => $text]); } return $arr; } 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] = segment('text', ['text' => $v])->jsonSerialize(); } } return $message; } if ($message instanceof MessageSegment) { return [$message->jsonSerialize()]; } return [segment('text', ['text' => $message])->jsonSerialize()]; } /** * 分割消息字符串 * * @param array $includes 需要进行切割的字符串,默认包含空格及制表符(\t) */ public static function splitMessage(string $msg, array $includes = [' ', "\t"]): array { $msg = trim($msg); foreach ($includes as $v) { $msg = str_replace($v, "\n", $msg); } $msg_seg = explode("\n", $msg); $ls = []; foreach ($msg_seg as $v) { if (empty(trim($v))) { continue; } $ls[] = trim($v); } return $ls; } public static function getAltMessage(null|array|string|MessageSegment $message): string { if ($message === null) { return ''; } if (is_string($message)) { return $message; } if ($message instanceof MessageSegment) { $message = [$message]; } $message_string = ''; foreach ($message as $segment) { if ($segment->type === 'text') { $message_string .= $segment->data['text']; } else { $message_string .= '[富文本:' . $segment->type . ']'; } } return $message_string; } }