parse
inline suspend fun parse(message: Message, crossinline onEachPre: MessageSendApi.Body.Builder.() -> Unit = {}, onEachPost: MessageSendApi.Body.Builder.() -> Unit = {}): List<MessageSendApi.Body.Builder>(source)
将 message 解析为一个或多个 MessageSendApi.Body.Builder。
消息拆分
当按照顺序解析且出现无法被叠加的消息元素时, 例如:
image / fileImage[MessageSendApi.Body.fileImage
使用模板的 markdown
会先当前已经解析完毕的内容构建一个 MessageSendApi.Body.Builder, 然后再构建一个新的继续解析, 直到结果全部解析完毕。
部分可叠加的消息元素,例如:
会尝试直接拼接/叠加而不是构建新的 builder。
注意避免
但是虽然说可以尝试着进行 Builder 的拆分,但是仍请尽可能确保使用的消息内容不会出现冲突。 因为拆分后的消息体并不能保证可以进行发送,它们有可能会因为缺失部分属性而导致发送失败、进而导致预期外的行为或异常。
举个例子,当解析的消息链中存在 QGReplyTo 时,其会尝试将当前已经解析出来的所有结果的 msgId 进行覆盖,但是它因无法影响到后续可能会继续被拆分出来的新的消息体而存在隐患。
Return
解析结果的 MessageSendApi.Body.Builder 序列。
fun parse(message: Message, messagesInit: Messages = emptyMessages()): ReceivingMessageParser.Context(source)
fun parse(content: String, attachments: List<Message.Attachment>? = null, messagesInit: Messages = emptyMessages()): ReceivingMessageParser.Context(source)