Mirai - Contacts

open in new window

类型描述最低支持的版本
ContactOrBotContactBot 的公共接口2.0
OtherClientBot 的其他客户端,如 "我的 iPad","我的电脑"2.0
Bot机器人对象2.0
Contact联系人对象,即所有的群,好友,陌生人,群成员等2.0
Group群对象2.0
User用户对象,即 "个人". 包含好友,陌生人,群成员,临时会话用户2.0
Friend好友对象2.0
Stranger陌生人对象2.0
Member群成员对象,属于一个 Group.2.0
NormalMember普通群成员对象.2.0
AnonymousMember匿名群成员对象.2.0

我们称 Contact联系人,它表示一个 Bot 可以联系的对象。如上图所示,Contact 的子类不仅有好友和群成员,还包括群和其他客户端。因此请不要因“联系人”中的“人”就认为它只代表一个用户。

获取联系人对象

Bot.getFriends()Bot.getGroups() 等方法可以获取到对象列表。

可通过 Bot.getFriendBot.getGroupBot.getStranger 以 QQ 号或群号主动获取某个对象。

可以通过事件被动获取 (后文介绍)

联系人对象唯一且属于 Bot

每个联系人对象都属于一个 Bot。可以通过 Contact.bot 获取到它们所属的 Bot

对于同一个 Bot,不会有 id 相同的两个 Group 对象。通过 Bot.getGroup 得到的和在群消息事件得到的相同 idGroup 对象是同一个。

若应用同时登录多个 Bot,不同 Botid 相同的 Group 也是互相独立的。

常用功能

基于面向对象的设计,可直接获取 Contact 的属性如 nickpermission。请在实践时在接口源码内查看更清晰的说明。

接收消息

消息通过事件被动接收。事件将在下一章节 Events 讲解。

主动发送消息

获取到目标对象并调用 Contact.sendMessage(message)。如要向某个群发送消息,则需要对应的 Group 对象,并调用 Group.sendMessage(message)

注意,由于对象代表意义不同,发送的消息类型也可能不同。NormalMember 是普通群成员,NormalMember.sendMessage 是对群成员发送临时会话消息,而 Friend.sendMessage 是发送好友消息。(备注:在实际情况下,如果机器人与群成员有好友关系,NormalMember.sendMessage 也会自动转换为发送好友消息,以保证消息送达)

联系其他客户端

一个 QQ 账号可以在多个客户端登录,mirai 支持向其他客户端收发消息. 其他客户端被抽象为 OtherClient

可以通过 Bot.getOtherClients() 获取到所有在线的其他客户端列表,并使用 OtherClient.sendMessage 来发送消息,这与操作普通好友类似。

使用戳一戳

戳一戳的被动接收与消息的接收相同,也是以事件的形式(NudgeEvent)。

要发起戳一戳,使用 Contact.nudge() 创建一个戳一戳动作(Nudge)然后将其发送到目标用户或群(Nudge.sendTo)。

操作群成员禁言和移除

使用 Member.mute, Member.unmute, Member.kick

提及群成员

提及(@)群成员在 mirai 属于 消息 的范畴。将在后面章节介绍。

其他功能

其他功能与上述类似,都作为成员方法位于目标对象中。未在成员方法或类注释中出现的其他功能即为目前还没有支持的功能。


下一步,Events

回到 Mirai 文档索引