From 25f1574a90e49a3425dd2b95bed9717b75a06d13 Mon Sep 17 00:00:00 2001 From: RTAkland Date: Mon, 27 Jan 2025 16:03:42 +0800 Subject: [PATCH] feat[onebot11]: add dsl messageChain builder --- gradle.properties | 2 +- .../cn/rtast/rob/onebot/MessageChain.kt | 32 ++++++++++++++++++- .../cn/rtast/rob/onebot/OneBotAction.kt | 28 ++++++++++++++++ .../rtast/rob/onebot/sdl/MessageChainDSL.kt | 17 ++++++++++ .../src/test/kotlin/test/MessageChainTest.kt | 19 +++++------ .../src/test/kotlin/test/TestClient.kt | 10 ++++++ 6 files changed, 95 insertions(+), 13 deletions(-) create mode 100644 ronebot-onebot-v11/src/main/kotlin/cn/rtast/rob/onebot/sdl/MessageChainDSL.kt diff --git a/gradle.properties b/gradle.properties index 9fc25ed..f720c41 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ kotlin.code.style=official -libVersion=2.6.6 +libVersion=2.6.7 #systemProp.http.proxyHost=127.0.0.1 #systemProp.http.proxyPort=12334 diff --git a/ronebot-onebot-v11/src/main/kotlin/cn/rtast/rob/onebot/MessageChain.kt b/ronebot-onebot-v11/src/main/kotlin/cn/rtast/rob/onebot/MessageChain.kt index d924163..174465f 100644 --- a/ronebot-onebot-v11/src/main/kotlin/cn/rtast/rob/onebot/MessageChain.kt +++ b/ronebot-onebot-v11/src/main/kotlin/cn/rtast/rob/onebot/MessageChain.kt @@ -14,7 +14,6 @@ import cn.rtast.rob.enums.PokeMessage import cn.rtast.rob.enums.QQFace import cn.rtast.rob.enums.internal.ContactType import cn.rtast.rob.segment.* -import kotlin.reflect.KClass /** * 快速构造一个数组形式的消息链 @@ -313,12 +312,43 @@ class MessageChain internal constructor(arrayMessageList: MutableList Unit) = + MessageChain.Builder().apply(builder).build() + diff --git a/ronebot-onebot-v11/src/test/kotlin/test/MessageChainTest.kt b/ronebot-onebot-v11/src/test/kotlin/test/MessageChainTest.kt index 0007d3b..20a9dcc 100644 --- a/ronebot-onebot-v11/src/test/kotlin/test/MessageChainTest.kt +++ b/ronebot-onebot-v11/src/test/kotlin/test/MessageChainTest.kt @@ -6,19 +6,16 @@ package test -import cn.rtast.rob.onebot.MessageChain +import cn.rtast.rob.onebot.sdl.messageChain import cn.rtast.rob.segment.Text -import cn.rtast.rob.segment.toMessageChain -import cn.rtast.rob.segment.plus fun main() { - println(Text("1") + Text("2")) - val l1 = listOf(Text("1"), Text("2")).apply { this + (Text("3")) } - println(MessageChain.Builder().build() + Text("1")) - val l2 = listOf(Text("3"), Text("4")) - val a = listOf(Text("1"), Text("2"), Text("3"), Text("4")).toMessageChain() - println(a) - println(Text("1") + Text("2") + Text("3") + "" + Text("4")) - Text("11") + MessageChain.Builder().build() + val msg = messageChain { + addText("Hello World") + this(Text("1111")) + invoke(Text("2222")) + +Text("22222") + add(Text("22222")) + } } diff --git a/ronebot-onebot-v11/src/test/kotlin/test/TestClient.kt b/ronebot-onebot-v11/src/test/kotlin/test/TestClient.kt index 761c6b2..ca6dc7b 100644 --- a/ronebot-onebot-v11/src/test/kotlin/test/TestClient.kt +++ b/ronebot-onebot-v11/src/test/kotlin/test/TestClient.kt @@ -14,6 +14,9 @@ import cn.rtast.rob.entity.GroupMessage import cn.rtast.rob.entity.custom.ErrorEvent import cn.rtast.rob.enums.QQFace import cn.rtast.rob.onebot.OneBotListener +import cn.rtast.rob.onebot.sdl.invoke +import cn.rtast.rob.onebot.sdl.messageChain +import cn.rtast.rob.segment.Text import cn.rtast.rob.util.BaseCommand import cn.rtast.rob.util.BrigadierCommand import cn.rtast.rob.util.CommandSource @@ -29,6 +32,13 @@ class TestClient : OneBotListener { override suspend fun onGroupMessage(message: GroupMessage, json: String) { println(message) + val msg = messageChain { + addText("Hello World") + this(Text("1111")) + invoke(Text("2222")) + +Text("22222") + } + message.reply(msg) } override suspend fun onWebsocketErrorEvent(event: ErrorEvent) {