# 好友相关
# Contact对象
YuQ中最基本的队话对象,所有可以发送消息的目标都可以视为一个Contact
在Action和Event中如果不知道具体的来源到底是什么的时候,可以考虑使用Contact来进行接受
Friend(好友)
Group(群组)
Member(群聊对象)
三者皆继承自Contact对象,都可使用SendMessage(Message)来发送消息
interface User {
val id: Long
val avatar: String
val name: String
fun isFriend(): Boolean
fun canSendMessage(): Boolean
}
interface Contact : User {
fun sendMessage(message: Message): MessageSource
fun toLogString(): String
override fun canSendMessage() = true
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Friend 对象
friend对象指示的是一个好友,存在于机器人的好友列表之中,可用yuq对象中的friends获取所有的机器人好友对象。
每个对象都可以判断qq号,昵称等常见个人资料,同时Friend继承自contact,可以使用sendMessage来实现消息的主动发送。
# Friend的几个操作
sendMessage 发送消息 使用Message对象发送
isFriend 判断是否好友 返回boolean类型
interface Friend : Contact {
override fun isFriend() = true
override fun canSendMessage() = true
override fun toLogString() = "$name($id)"
fun delete()
fun click()
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# Group对象
Group指代的是Bot中的一个群组,与friends相似,使用yuq的getGroups可以获取所有的Group,并且同样继承自Contact。
在Group中,存有全体群成员的MemberList和管理员列表的AdminList
interface Group : Contact {
val members: Map<Long, Member>
val bot: Member
val maxCount: Int
val owner: Member
val admins: List<Member>
operator fun get(qq: Long)= getOrNull(qq) ?: error("Member $qq Not Found!")
fun getOrNull(qq:Long):Member? = members[qq] ?: if (qq == bot.id) bot else null
/***
* 离开本群,当机器人是群主的时候解析为解散。
*/
fun leave()
fun banAll()
fun unBanAll()
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Member对象
继承自Contact,发送方法一致。与Group和Friend不同的是,Member指向的是群聊内的某个成员,他未必与机器人构成好友关系。
与此同时,YuQ提供了一系列对于群成员的操作方法
interface Member : Contact, User {
//所在群
val group: Group
//权限级别
val permission: Int
//群昵称
var nameCard: String
//头衔(大概)
val title: String
//被禁言时间
val ban: Int
fun isBan()
fun ban(time: Int)
fun unBan()
fun nameCardOrName()
fun click()
fun clickWithTemp()
fun at(): At = mif.at(this)
fun isAdmin()
fun isOwner()
fun kick(message: String = "")
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
方法名 | 参数 | 返回值 | 解释 |
---|---|---|---|
isBan | void | boolean | 是否被禁言 |
Ban | int | void | 禁言Member(需要管理员权限) |
NameCardOrName | void | String | 返回群昵称或者QQ昵称 |
Click | void | void | 戳一戳 |
isAdmin | void | boolean | 是否拥有管理员权限 |
isOwner | void | boolean | 是否群主 |
kick | message | void | 踢人 |