From 7d0d92f1fd7f6ecda1929f421bf0bf92b0643bcf Mon Sep 17 00:00:00 2001 From: Him188 Date: Mon, 1 Feb 2021 01:09:07 +0800 Subject: [PATCH] Update Messages.md --- docs/Messages.md | 42 +++++++++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/docs/Messages.md b/docs/Messages.md index 7a7c04e6b..63c5f1ad2 100644 --- a/docs/Messages.md +++ b/docs/Messages.md @@ -28,16 +28,31 @@ ## 消息类型 -*单个消息元素(`SingleMessage`)*分为 *消息内容(`MessageContent`)* 和 *消息元数据(`MessageMetadata`)*。 +Mirai 支持富文本消息。 + +*单个消息元素(`SingleMessage`)* 分为 *内容(`MessageContent`)* 和 *元数据(`MessageMetadata`)*。 实践中,消息内容和消息元数据会混合存在于消息链中。 +### 内容 + +*内容(`MessageContent`)* 即为 *纯文本*、*提及某人*、*图片*、*语音* 和 *音乐分享* 等**有内容**的数据,一条消息中必须包含内容才能发送。 + +### 元数据 + +*元数据(`MessageMetadata`)* 包含 *来源*、*引用回复* 和 *秀图标识* 等。 + +- *消息来源*(`MessageSource`)存在于每条消息中,包含唯一识别信息,用于撤回和引用回复的定位。 +- *引用回复*(`QuoteReply`)若存在,则会在客户端中解析为本条消息引用了另一条消息。 +- *秀图标识*(`ShowImageFlag`)若存在,则表明这条消息中的图片是以秀图发送(QQ 的一个功能)。 + +元数据与内容的区分就在于,一条消息没有元数据也能显示,但一条消息不能没有内容。**元数据是消息的属性**。 + + > 回到 [目录](#目录) ## 消息元素 -Mirai 支持富文本消息。 - 消息拥有三种转换到字符串的表示方式。 | 方法 | 解释 | @@ -104,7 +119,15 @@ Mirai 支持富文本消息。 suspend fun sendMessage(message: Message): MessageReceipt ``` -要发送简单的单元素消息,使用: +要发送字符串消息,使用:(第一部分是 Kotlin,随后是 Java,下同) +```kotlin +contact.sendMessage("Hello!") +``` +```java +contact.sendMessage("Hello!"); +``` + +发送字符串实际上是在发送纯文本消息。上面的代码相当于: ```kotlin contact.sendMessage(PlainText("Hello!")) ``` @@ -114,10 +137,10 @@ contact.sendMessage(new PlainText("Hello!")); 要发送多元素消息,可将消息使用 `plus` 操作连接: ```kotlin -contact.sendMessage(PlainText("你要的图片是") + Image("/f8f1ab55-bf8e-4236-b55e-955848d7069f")) // 一个纯文本加一个图片 +contact.sendMessage(PlainText("你要的图片是") + Image("{f8f1ab55-bf8e-4236-b55e-955848d7069f}.png")) // 一个纯文本加一个图片 ``` ```java -contact.sendMessage(new PlainText("你要的图片是:").plus(Image.fromId("/f8f1ab55-bf8e-4236-b55e-955848d7069f"))); // 一个纯文本加一个图片 +contact.sendMessage(new PlainText("你要的图片是:").plus(Image.fromId("{f8f1ab55-bf8e-4236-b55e-955848d7069f}.png"))); // 一个纯文本加一个图片 ``` ### 构造消息链 @@ -165,13 +188,18 @@ val chain = buildMessageChain { 方法都位于 `net.mamoe.mirai.message.data.MessageUtils`。 +使用 `newChain`: +```java +MessageChain chain = MessageUtils.newChain(new PlainText("Hello"), Image.fromId("{f8f1ab55-bf8e-4236-b55e-955848d7069f}.png")); +``` + 使用 `MessageChainBuilder`: ```java MessageChain chain = new MessageChainBuilder() .append(new PlainText("string")) .append("string") // 会被构造成 PlainText 再添加, 相当于上一行 .append(AtAll.INSTANCE) - .append(Image.fromId("/f8f1ab55-bf8e-4236-b55e-955848d7069f")) + .append(Image.fromId("{f8f1ab55-bf8e-4236-b55e-955848d7069f}.png")) .build(); ```