Skip to content
This repository was archived by the owner on Aug 16, 2024. It is now read-only.

Commit 705686e

Browse files
committed
更新文档
1 parent 41017be commit 705686e

File tree

2 files changed

+82
-18
lines changed

2 files changed

+82
-18
lines changed

README.md

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,33 +18,55 @@
1818

1919
## 项目文档
2020

21-
[使用说明](doc/使用说明.md)
21+
项目文档: [使用说明](doc/使用说明.md)
22+
23+
更加推荐阅读完 examples 后,“按照直觉” 来使用 mirai-cpp。
24+
25+
| 文件名 | 说明 |
26+
|----------------------|------------------------------|
27+
| RepeatMessage.cpp | 简单的复读机器人 |
28+
| SendImageMessage.cpp | 发送图片示例 |
29+
| BotEvents.cpp | 处理有关Bot相关的事件 |
30+
| GetFriendList.cpp | 打印Bot的好友列表 |
31+
| GetGroupList.cpp | 打印Bot的群组列表 |
32+
| MemberJoinEvent.cpp | 处理新成员加入群的申请和事件 |
33+
| MemberLeaveEvent.cpp | 处理成员退出群的事件 |
34+
| MessageType.cpp | 获取/处理各种类型的消息示例 |
35+
| NewFriendEvent.cpp | 处理好友申请 |
36+
| Recall.cpp | 撤回消息示例 |
37+
| RecallEvent.cpp | 处理其他人撤回消息的事件 |
38+
| Mute.cpp | 和禁言有关的操作 |
39+
| RichMessage.cpp | 发送 JSON、闪照等类型的消息 |
2240

2341
## 如何使用
2442

2543
### 1. 快速尝试
2644

27-
1. 使用 Visual Studio
45+
#### (1) 使用 Visual Studio
2846

29-
完整克隆/下载本仓库。
47+
> 1. 完整克隆/下载本仓库。
3048
31-
如图所示,使用 Visual Studio 2019 直接打开这个文件夹。
49+
> 2. 如图所示,使用 Visual Studio 2019 直接打开这个文件夹。
3250
33-
![使用 VS 直接打开 mirai-cpp 文件夹](./doc/pic/vs_1.png)
51+
> 3. 如果一切顺利,你可以直接运行我写好的示例,或者进行修改编写自己的机器人。
52+
53+
<details>
3454

35-
如果一切顺利,你可以直接运行我写好的示例,或者进行修改编写自己的机器人。
55+
![使用 VS 直接打开 mirai-cpp 文件夹](./doc/pic/vs_1.png)
3656

3757
![开始运行 examples](./doc/pic/vs_2.png)
3858

39-
2. 使用 Visual Studio Code
59+
</details>
4060

41-
完整克隆/下载本仓库。
61+
#### (2) 使用 Visual Studio Code
4262

43-
使用 VS Code 直接打开这个文件夹
63+
> 1. 完整克隆/下载本仓库
4464
45-
安装 CMake Tools 扩展
65+
> 2. 使用 VS Code 直接打开这个文件夹
4666
47-
直接开始调试:
67+
> 3. 安装 CMake Tools 扩展。
68+
69+
> 4. 直接开始调试
4870
4971
![vsc 开始调试](./doc/pic/vsc.png)
5072

@@ -53,15 +75,14 @@
5375

5476
#### (1) 将程序轻松移植、部署到 Linux 上
5577

78+
<details>
5679

5780
(以下内容基于 “快速尝试”,请先完成“快速尝试”。)
5881

5982
上面的内容介绍了如何在 Windows 上开发使用 mirai-cpp 的程序,下面来介绍如何将你的程序移植到 Linux 平台,以便将程序部署到 Linux 服务器上。
6083

6184
为了易于讲解与操作,以下内容在 **WSL** (**W**indows **S**ubsystem for **L**inux) 上进行。这里不对如何安装 WSL 进行说明,关于如何安装 WSL 还请自行查阅资料。
6285

63-
1. 创建针对 WSL 的配置
64-
6586
打开在 “快速尝试” 中用到的项目。按照如图所示步骤,创建一个针对 WSL 平台的配置。因为我的 WSL 安装了 GCC 编译器,所以这里选择 **WSL-GCC-Releas**
6687

6788
![创建WSL-GCC平台配置1](./doc/pic/vs_3.png)
@@ -70,6 +91,7 @@
7091

7192
如果一切顺利,等待 CMake 缓存生成成功后,即可编译出 Linux 平台的可执行文件。
7293

94+
</details>
7395

7496
#### (2) 使用 CMake-GUI 编译
7597

doc/使用说明.md

Lines changed: 47 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,13 @@ bot.On<NewFriendRequestEvent>([&](NewFriendRequestEvent e)
115115
bot.EventLoop();
116116
```
117117

118-
bot.EventLoop() 方法会阻塞当前线程,内含死循环不断轮询新的事件。该方法不会抛出异常。(因为抛出异常会打断死循环,所以在循环里面会捕捉异常并在 cerr 输出,不知道有没有更优雅的解决方法)
118+
bot.EventLoop() 方法会阻塞当前线程,内含死循环不断轮询新的事件。该方法不会抛出异常,如果有错误默认会在 cerr 输出。
119+
120+
如果希望自定义 EventLoop 处理错误信息的方式,可以尝试这样写:
121+
122+
```C++
123+
bot.EventLoop([](const char* errMsg){/*...*/ });
124+
```
119125
120126
# 如何发送消息、引用回复、撤回消息
121127
@@ -159,6 +165,9 @@ void GroupMsgProcessor(GroupMessage m)
159165
// 直接撤回
160166
m.Recall();
161167
// bot.Recall(m.GetMessageId());
168+
169+
// 判断有没有 At 我 (仅限 GroupMessage)
170+
m.AtMe()
162171
}
163172

164173
// 定义好消息处理函数后,不要忘了将它与事件绑定起来
@@ -185,9 +194,11 @@ MessageChain msg = MessageChain()
185194
.AtAll();
186195
```
187196

188-
## 获得 ImageId
197+
## 获得 ImageId 以发送图片
198+
199+
使用 UploadFriendImage 、UploadGroupImage 、 UploadTempImage 方法上传图片,其返回值分别为 FriendImage 、 GroupImage 、TempImage 类型的图片。(FriendImage 、 GroupImage 、TempImage 都是 MiraiImage 的别称)
189200

190-
使用 UploadFriendImage 、UploadGroupImage 、 UploadTempImage 方法上传图片,其返回值分别为 FriendImage 、 GroupImage 、TempImage 类型的图片。(之所以分成三个类型是因为它们的 ID 格式不一样)
201+
> 注意: 三种图片的 ID 的格式互不相同,所有不要将各类型的图片混用,比如将 FriendImage 发送给某个群组。虽然 mirai-cpp 没有限制你这样做,但是这一定达不到预期的结果,并且很可能会引发异常。
191202
192203
```C++
193204
GroupImage img = UploadGroupImage("D:\\test.png");
@@ -216,7 +227,14 @@ string msg_str = msg.GetPlainText();
216227

217228
## 获取其他消息类型的内容
218229

219-
还没写相关的 API...
230+
MessageChain 提供了 GetXXX 的方法,其中 XXX 为消息类型,作用是获得所有该类型的消息,储存在 vector 中。
231+
232+
| 方法签名 | 说明 |
233+
|-------------------------------------|-------------------------------------------------|
234+
| vector<string> GetPlain() const | 获取所有 Plain 类型消息 |
235+
| vector<MiraiImage> GetImage() const | 获取所有 Image、FlashImage 类型消息(图片和闪照) |
236+
| vector<QQ_t> GetAt() const | 获取所有 At 类型消息 |
237+
| vector<int> GetFace() const | 获取所有 Face 类型消息 |
220238

221239
## 其他函数
222240

@@ -228,8 +246,32 @@ GetTimestamp 方法可以获得这条消息的时间戳(类型为 int64_t )。
228246

229247
建议参考 /examples 的源代码,其中的 examples 会随着 mirai-cpp 的更新而更新。
230248

249+
(强烈建议将 examples 都阅读一遍,因为精力关系我没能把所有函数都写在文档上)
250+
251+
| 文件名 | 说明 |
252+
|----------------------|------------------------------|
253+
| RepeatMessage.cpp | 简单的复读机器人 |
254+
| SendImageMessage.cpp | 发送图片示例 |
255+
| BotEvents.cpp | 处理有关Bot相关的事件 |
256+
| GetFriendList.cpp | 打印Bot的好友列表 |
257+
| GetGroupList.cpp | 打印Bot的群组列表 |
258+
| MemberJoinEvent.cpp | 处理新成员加入群的申请和事件 |
259+
| MemberLeaveEvent.cpp | 处理成员退出群的事件 |
260+
| MessageType.cpp | 获取/处理各种类型的消息示例 |
261+
| NewFriendEvent.cpp | 处理好友申请 |
262+
| Recall.cpp | 撤回消息示例 |
263+
| RecallEvent.cpp | 处理其他人撤回消息的事件 |
264+
| Mute.cpp | 和禁言有关的操作 |
265+
| RichMessage.cpp | 发送 JSON、闪照等类型的消息 |
266+
267+
231268
# 关于异常
232269

233270
MiraiBot 中的方法几乎都会抛出异常,建议捕捉起来。
234271

235-
EventLoop 方法不会抛出异常,因为一些原因,它会捕捉异常,并在 cerr 中输出。(这是因为我不知道如何优雅地处理这里抛出的异常。如果你不希望输出,除了直接修改源码外暂时没有其他办法,如果有好的处理方法可以提交 issues 让我修改)
272+
EventLoop 方法不会抛出异常,它会捕捉异常,并在 cerr 中输出。
273+
如果希望自定义 EventLoop 处理错误信息的方式,可以尝试这样写:
274+
275+
```C++
276+
bot.EventLoop([](const char* errMsg){/*...*/ });
277+
```

0 commit comments

Comments
 (0)