Skip to content

Commit f76afc2

Browse files
committed
friend group request
1 parent 9826255 commit f76afc2

File tree

4 files changed

+43
-4
lines changed

4 files changed

+43
-4
lines changed

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ plugins {
2626
}
2727

2828
group = "net.lz1998"
29-
version = "0.0.3"
29+
version = "0.0.6"
3030
java.sourceCompatibility = JavaVersion.VERSION_1_8
3131

3232
configurations {

src/main/kotlin/net/lz1998/mirai/entity/WebSocketBotClient.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,17 @@ import kotlinx.coroutines.Dispatchers
44
import kotlinx.coroutines.GlobalScope
55
import kotlinx.coroutines.launch
66
import kotlinx.coroutines.withContext
7+
import net.lz1998.mirai.ext.friendRequestLru
8+
import net.lz1998.mirai.ext.groupRequestLru
79
import net.lz1998.mirai.ext.messageSourceLru
810
import net.lz1998.mirai.service.MyLoginSolver
911
import net.lz1998.mirai.utils.*
1012
import net.lz1998.mirai.utils.toFrame
1113
import net.mamoe.mirai.Bot
1214
import net.mamoe.mirai.alsoLogin
1315
import net.mamoe.mirai.event.events.BotEvent
16+
import net.mamoe.mirai.event.events.MemberJoinRequestEvent
17+
import net.mamoe.mirai.event.events.NewFriendRequestEvent
1418
import net.mamoe.mirai.event.subscribeAlways
1519
import net.mamoe.mirai.message.MessageEvent
1620
import okhttp3.*
@@ -103,6 +107,12 @@ class WebsocketBotClient(override var botId: Long, override var password: String
103107
val messageSource = this.source // 撤回消息用
104108
bot.messageSourceLru.put(messageSource.id, messageSource)
105109
}
110+
bot.subscribeAlways<MemberJoinRequestEvent> {
111+
bot.groupRequestLru.put(it.eventId, it)
112+
}
113+
bot.subscribeAlways<NewFriendRequestEvent> {
114+
bot.friendRequestLru.put(it.eventId, it)
115+
}
106116
}
107117

108118
override suspend fun login() {
@@ -125,6 +135,8 @@ class WebsocketBotClient(override var botId: Long, override var password: String
125135
OnebotFrame.Frame.MessageType.SetGroupNameReq -> respBuilder.setGroupNameResp = handleSetGroupName(bot, req.setGroupNameReq)
126136
OnebotFrame.Frame.MessageType.SetGroupLeaveReq -> respBuilder.setGroupLeaveResp = handleSetGroupLeave(bot, req.setGroupLeaveReq)
127137
OnebotFrame.Frame.MessageType.SetGroupSpecialTitleReq -> respBuilder.setGroupSpecialTitleResp = handleSetGroupSpecialTitle(bot, req.setGroupSpecialTitleReq)
138+
OnebotFrame.Frame.MessageType.SetFriendAddRequestReq -> respBuilder.setFriendAddRequestResp = handleSetFriendAddRequest(bot, req.setFriendAddRequestReq)
139+
OnebotFrame.Frame.MessageType.SetGroupAddRequestReq -> respBuilder.setGroupAddRequestResp = handleSetGroupAddRequest(bot, req.setGroupAddRequestReq)
128140
OnebotFrame.Frame.MessageType.GetLoginInfoReq -> respBuilder.getLoginInfoResp = handleGetLoginInfo(bot, req.getLoginInfoReq)
129141
OnebotFrame.Frame.MessageType.GetFriendListReq -> respBuilder.getFriendListResp = handleGetFriendList(bot, req.getFriendListReq)
130142
OnebotFrame.Frame.MessageType.GetGroupInfoReq -> respBuilder.getGroupInfoResp = handleGetGroupInfo(bot, req.getGroupInfoReq)

src/main/kotlin/net/lz1998/mirai/ext/Bot.kt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,19 @@ package net.lz1998.mirai.ext
22

33
import com.fasterxml.jackson.databind.util.LRUMap
44
import net.mamoe.mirai.Bot
5+
import net.mamoe.mirai.event.events.MemberJoinRequestEvent
6+
import net.mamoe.mirai.event.events.NewFriendRequestEvent
57
import net.mamoe.mirai.message.data.MessageSource
68

7-
val lru = LRUMap<Int, MessageSource>(128, 1024)
9+
val messageLru = LRUMap<Int, MessageSource>(128, 2048)
810
val Bot.messageSourceLru
9-
get() = lru
11+
get() = messageLru
12+
13+
14+
val memberJoinRequestEventLru = LRUMap<Long, MemberJoinRequestEvent>(16, 128)
15+
val Bot.groupRequestLru
16+
get() = memberJoinRequestEventLru
17+
18+
val newFriendRequestEventLru = LRUMap<Long, NewFriendRequestEvent>(16, 128)
19+
val Bot.friendRequestLru
20+
get() = newFriendRequestEventLru

src/main/kotlin/net/lz1998/mirai/utils/ApiHandler.kt

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package net.lz1998.mirai.utils
22

3+
import net.lz1998.mirai.ext.friendRequestLru
4+
import net.lz1998.mirai.ext.groupRequestLru
35
import net.lz1998.mirai.ext.messageSourceLru
46
import net.mamoe.mirai.Bot
57
import net.mamoe.mirai.contact.MemberPermission
@@ -100,7 +102,21 @@ suspend fun handleSetGroupSpecialTitle(bot: Bot, req: OnebotApi.SetGroupSpecialT
100102
return OnebotApi.SetGroupSpecialTitleResp.newBuilder().build()
101103
}
102104

103-
// TODO 处理好友/群请求
105+
suspend fun handleSetFriendAddRequest(bot: Bot, req: OnebotApi.SetFriendAddRequestReq): OnebotApi.SetFriendAddRequestResp? {
106+
val approve = req.approve
107+
val flag = req.flag
108+
val request = bot.friendRequestLru[flag.toLongOrNull()] ?: return null
109+
if (approve) request.accept() else request.reject()
110+
return OnebotApi.SetFriendAddRequestResp.newBuilder().build()
111+
}
112+
113+
suspend fun handleSetGroupAddRequest(bot: Bot, req: OnebotApi.SetGroupAddRequestReq): OnebotApi.SetGroupAddRequestResp? {
114+
val approve = req.approve
115+
val flag = req.flag
116+
val request = bot.groupRequestLru[flag.toLongOrNull()] ?: return null
117+
if (approve) request.accept() else request.reject()
118+
return OnebotApi.SetGroupAddRequestResp.newBuilder().build()
119+
}
104120

105121
suspend fun handleGetLoginInfo(bot: Bot, req: OnebotApi.GetLoginInfoReq): OnebotApi.GetLoginInfoResp {
106122
return OnebotApi.GetLoginInfoResp.newBuilder().setUserId(bot.id).setNickname(bot.nick).build()

0 commit comments

Comments
 (0)