Update Messages.md

This commit is contained in:
Him188 2021-02-01 01:09:07 +08:00 committed by GitHub
parent 21f654039e
commit 7d0d92f1fd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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<Contact> suspend fun sendMessage(message: Message): MessageReceipt<Contact>
``` ```
要发送简单的单元素消息,使用: 要发送字符串消息,使用:(第一部分是 Kotlin随后是 Java下同
```kotlin
contact.sendMessage("Hello!")
```
```java
contact.sendMessage("Hello!");
```
发送字符串实际上是在发送纯文本消息。上面的代码相当于:
```kotlin ```kotlin
contact.sendMessage(PlainText("Hello!")) contact.sendMessage(PlainText("Hello!"))
``` ```
@ -114,10 +137,10 @@ contact.sendMessage(new PlainText("Hello!"));
要发送多元素消息,可将消息使用 `plus` 操作连接: 要发送多元素消息,可将消息使用 `plus` 操作连接:
```kotlin ```kotlin
contact.sendMessage(PlainText("你要的图片是") + Image("/f8f1ab55-bf8e-4236-b55e-955848d7069f")) // 一个纯文本加一个图片 contact.sendMessage(PlainText("你要的图片是") + Image("{f8f1ab55-bf8e-4236-b55e-955848d7069f}.png")) // 一个纯文本加一个图片
``` ```
```java ```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` 方法都位于 `net.mamoe.mirai.message.data.MessageUtils`
使用 `newChain`
```java
MessageChain chain = MessageUtils.newChain(new PlainText("Hello"), Image.fromId("{f8f1ab55-bf8e-4236-b55e-955848d7069f}.png"));
```
使用 `MessageChainBuilder`: 使用 `MessageChainBuilder`:
```java ```java
MessageChain chain = new MessageChainBuilder() MessageChain chain = new MessageChainBuilder()
.append(new PlainText("string")) .append(new PlainText("string"))
.append("string") // 会被构造成 PlainText 再添加, 相当于上一行 .append("string") // 会被构造成 PlainText 再添加, 相当于上一行
.append(AtAll.INSTANCE) .append(AtAll.INSTANCE)
.append(Image.fromId("/f8f1ab55-bf8e-4236-b55e-955848d7069f")) .append(Image.fromId("{f8f1ab55-bf8e-4236-b55e-955848d7069f}.png"))
.build(); .build();
``` ```