因为这份文档面向的是全体用户,所以为了照顾一些刚刚接触Mirai以及Mirai.NET的用户,在这里先补充一些基础知识吧。
mirai是一个非常庞大的项目,这里仅仅是简单的扫盲,详细的了解请参考官方文档。
mirai是啥
mirai 是一个在全平台下运行,提供 QQ Android 协议支持的高效率机器人库
通常来说,使用mirai开发机器人有以下几种方式(以及比较冷门的mirai-native,我没使用过,故此处不进行介绍):
- 直接引用mirai-core。
- 使用mirai-console,开发console插件。
- 或者使用mirai-api-http。
通常来说,使用前两种方式(core和console)需要一定的JVM编程语言基础(比如Kotlin或者Java),而后一种方式(api-http)则不限定语言和技术,这也就是为什么现在你可以用C#来调用mirai编写QQ机器人。
Mirai-API-http插件 提供HTTP API供所有语言使用mirai
正如你打开本项目所见到的,之所有能够有一堆mirai社区sdk,正是因为有了mirai-api-http。
mirai-api-http是一个mirai-console插件,也就是说要使用mirai-api-http必须配置mirai-console环境,这个稍后会讲到。
mirai-api-http提供了一系列的http api用于与mirai-console交互,所以本质上Mirai.NET所提供的就是封装与mirai-api-http交互的过程,然后在此基础上尽量添加一些实用的功能。
看不懂?没关系,反正你只需要知道有这么个玩意就行了。
这里简单地介绍以下Mirai.NET发送和接收消息的一些基础概念。
不管是发送和接收消息,mirai都使用了一种名叫消息链的方案来处理收到/发出的富文本消息。
也就是说,在一个消息链中,可以包含多种类型的消息,比如文本消息、图片消息、语音消息等等。
消息接收器是Mirai.NET中特有的一种消息容器,通常来说,消息接收器都是MessageReceiverBase
的子类,它们共同包含下列属性:
MessageChain
,也就是消息链。Type
,用来指示该消息接收器的类型。Friend
,表示接收到的是好友消息。Group
,表示接收到的是群消息。Temp
,表示接收到的是临时消息。Stranger
,表示接收到的是陌生人消息。OtherClient
,表示接收到的是其他客户端消息。
但实际上也还有一个基类没有定义,却同样存在于各个子类的属性Sender
,这个属性表示消息的发送者,它会根据子类的不同而有着不同的类型。比如GroupMessageReceiver
的Sender
就是Member
,而FriendMessageReceiver
的Sender
就是Friend
,以此类推。