This repository was archived by the owner on Aug 16, 2024. It is now read-only.
File tree Expand file tree Collapse file tree 1 file changed +48
-0
lines changed
Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change @@ -66,6 +66,8 @@ int64_t qq = int64_t(qq);
6666
6767MiraiBot 类提供了 On 方法和 OnEventReceived 方法,这两个方法是等价的。mirai-cpp 做了许多工作,让你可以轻松地接收某个事件。这些事件的名称可以在 [ mirai-api-http 的文档] ( https://github.com/mamoe/mirai-api-http/blob/master/EventType.md ) 里找到。你只需要知道这个事件的名称,即可使用 On 方法接收此事件。(因为时间关系,当前版本[ 0.4.4-alpha] 有一些事件还没有实现)
6868
69+ ## 监听消息和事件(以 GroupMessage 为例)
70+
6971以 GroupMessage 消息事件为例:
7072
7173``` C++
@@ -115,6 +117,52 @@ bot.On<NewFriendRequestEvent>([&](NewFriendRequestEvent e)
115117bot.EventLoop();
116118```
117119
120+ ## 通用消息事件
121+
122+ 考虑使用“通用消息事件”(Message),这个事件会在收到好友消息、群组消息和临时消息时被触发。
123+
124+ ``` C++
125+ // 通用型消息
126+ // 收到 FriendMessage、GroupMessage、TempMessage 时都会调用它
127+ // 判断类型之后,也可调用对应的转换函数进行转换 (类型不正确将转换失败抛出异常)
128+ bot.On<Message>(
129+ [&](Message m)
130+ {
131+ // 只能通过 Message 获得发送者的QQ号码
132+ // 如果想要“原路回复”(好友消息私聊回复,群组消息群组回复),
133+ // 请使用 Message 事件的 Reply 方法。
134+ m.Reply("Message事件可处理三种消息:" + m.MessageChain);
135+
136+ // 判断是否群组消息
137+ if(m.GetMessageType() == MessageType::GroupMessage)
138+ {
139+ GroupMessage gm = m.ToGroupMessage();
140+ // TODO: 针对群组消息的特别处理
141+ }
142+ });
143+ ```
144+
145+ ## 同一个事件,多个处理函数
146+
147+ 可以对同一类型的事件重复使用On方法,每个事件处理函数都会被调用,但是**不保证调用的顺序**。
148+
149+ ```C++
150+ // 监听各类事件
151+ bot.On<GroupMessage>(
152+ [&](GroupMessage m)
153+ {
154+ m.QuoteReply(m.MessageChain);
155+ });
156+ // 可以多次监听同一事件,每个处理函数都会被执行,但是不保证执行顺序
157+ bot.On<GroupMessage>(
158+ [&](GroupMessage m)
159+ {
160+ m.Reply("2222 " + m.MessageChain);
161+ });
162+ ```
163+
164+ ## 获取事件的方式(WebSocket 或 Http)
165+
118166mirai-cpp 默认使用 WebSocket 拉取事件和消息,如果需要通过 HTTP 来拉取消息,可以调用 UseHttp 函数。(不需要开启 mirai-api-http 的全局 WebSocket 设置,mirai-cpp 会自动针对 Session 开启 WebSocket。)
119167
120168``` C++
You can’t perform that action at this time.
0 commit comments