1717
1818package love.forte.simbot.component.onebot.v11.core.event.internal.request
1919
20+ import love.forte.simbot.ability.AcceptOption
21+ import love.forte.simbot.ability.RejectOption
2022import love.forte.simbot.common.id.ID
2123import love.forte.simbot.common.id.UUID
2224import love.forte.simbot.component.onebot.v11.core.actor.OneBotGroup
@@ -29,9 +31,7 @@ import love.forte.simbot.component.onebot.v11.core.bot.OneBotBot
2931import love.forte.simbot.component.onebot.v11.core.bot.internal.OneBotBotImpl
3032import love.forte.simbot.component.onebot.v11.core.bot.requestDataBy
3133import love.forte.simbot.component.onebot.v11.core.event.internal.eventToString
32- import love.forte.simbot.component.onebot.v11.core.event.request.OneBotFriendRequestEvent
33- import love.forte.simbot.component.onebot.v11.core.event.request.OneBotGroupRequestEvent
34- import love.forte.simbot.component.onebot.v11.core.event.request.OneBotRequestEvent
34+ import love.forte.simbot.component.onebot.v11.core.event.request.*
3535import love.forte.simbot.component.onebot.v11.event.request.FriendRequestEvent
3636import love.forte.simbot.component.onebot.v11.event.request.GroupRequestEvent
3737
@@ -40,25 +40,47 @@ internal abstract class OneBotRequestEventImpl : OneBotRequestEvent {
4040 override val id: ID = UUID .random()
4141
4242 override suspend fun accept () {
43- doSetRequest(true )
43+ doAccept(emptyArray())
44+ }
45+
46+ override suspend fun accept (vararg options : AcceptOption ) {
47+ doAccept(options)
4448 }
4549
4650 override suspend fun reject () {
47- doSetRequest( false )
51+ doReject(emptyArray() )
4852 }
4953
50- protected abstract suspend fun doSetRequest (approve : Boolean )
54+ override suspend fun reject (vararg options : RejectOption ) {
55+ doReject(options)
56+ }
57+
58+ protected abstract suspend fun doAccept (options : Array <out AcceptOption >)
59+ protected abstract suspend fun doReject (options : Array <out RejectOption >)
5160}
5261
5362internal class OneBotFriendRequestEventImpl (
5463 override val sourceEventRaw : String? ,
5564 override val sourceEvent : FriendRequestEvent ,
5665 override val bot : OneBotBot ,
5766) : OneBotRequestEventImpl(), OneBotFriendRequestEvent {
58- override suspend fun doSetRequest (approve : Boolean ) {
67+ override suspend fun doAccept (options : Array <out AcceptOption >) {
68+ val remark: String? = (
69+ options.firstOrNull { it is OneBotFriendRequestAcceptOption .Remark }
70+ as ? OneBotFriendRequestAcceptOption .Remark
71+ )?.remark
72+
5973 SetFriendAddRequestApi .create(
6074 flag = sourceEvent.flag,
61- approve = approve,
75+ approve = true ,
76+ remark = remark
77+ ).requestDataBy(bot)
78+ }
79+
80+ override suspend fun doReject (options : Array <out RejectOption >) {
81+ SetFriendAddRequestApi .create(
82+ flag = sourceEvent.flag,
83+ approve = false ,
6284 ).requestDataBy(bot)
6385 }
6486
@@ -71,11 +93,25 @@ internal class OneBotGroupRequestEventImpl(
7193 override val sourceEvent : GroupRequestEvent ,
7294 override val bot : OneBotBotImpl ,
7395) : OneBotRequestEventImpl(), OneBotGroupRequestEvent {
74- override suspend fun doSetRequest (approve : Boolean ) {
96+ override suspend fun doAccept (options : Array <out AcceptOption >) {
97+ SetGroupAddRequestApi .create(
98+ flag = sourceEvent.flag,
99+ subType = sourceEvent.subType,
100+ approve = true
101+ ).requestDataBy(bot)
102+ }
103+
104+ override suspend fun doReject (options : Array <out RejectOption >) {
105+ val reason = (
106+ options.firstOrNull { it is OneBotGroupRequestRejectOption .Reason }
107+ as ? OneBotGroupRequestRejectOption .Reason
108+ )?.reason
109+
75110 SetGroupAddRequestApi .create(
76111 flag = sourceEvent.flag,
77112 subType = sourceEvent.subType,
78- approve = approve
113+ approve = false ,
114+ reason = reason
79115 ).requestDataBy(bot)
80116 }
81117
0 commit comments