From a7aa2bda2be8df87d5cadee44f10d33a4a6acf47 Mon Sep 17 00:00:00 2001 From: Grand-cocoa <1075576561@qq.com49111108+grand-cocoa@users.noreply.github.com> Date: Wed, 4 Sep 2024 18:32:06 +0800 Subject: [PATCH] =?UTF-8?q?refactor(miraibot):=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=92=8C=E9=85=8D=E7=BD=AE=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96bot=E5=88=9D=E5=A7=8B=E5=8C=96-=20=E9=87=8D=E6=9E=84Bo?= =?UTF-8?q?tConfiguration=E4=BB=A5=E4=BD=BF=E7=94=A8=E5=BB=B6=E8=BF=9F?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E3=80=82=20-=20=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E8=BF=94=E5=9B=9EBot=E5=AE=9E=E4=BE=8B=E4=BB=A5=E7=AE=80?= =?UTF-8?q?=E5=8C=96=E4=BB=A3=E7=A0=81=E3=80=82=20-=20=E6=9B=B4=E6=96=B0Ex?= =?UTF-8?q?ampleService=E4=BB=A5=E5=A4=84=E7=90=86FriendMessageEvent?= =?UTF-8?q?=E3=80=82=20-=20=E4=BF=AE=E6=AD=A3Service.kt=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E6=B3=9B=E5=9E=8B=E5=A3=B0=E6=98=8E=E6=A0=BC=E5=BC=8F=E3=80=82?= =?UTF-8?q?=20-=20=E5=9C=A8BotConfig=E4=B8=AD=E6=B7=BB=E5=8A=A0=E6=96=B0?= =?UTF-8?q?=E7=9A=84ADMIN=5FID=E5=B1=9E=E6=80=A7=E5=B9=B6=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E5=88=9D=E5=A7=8B=E5=8C=96=E6=A3=80=E6=9F=A5=E3=80=82?= =?UTF-8?q?=20-=20=E8=B0=83=E6=95=B4=E5=B7=A5=E4=BD=9C=E6=B5=81=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=A0=BC=E5=BC=8F=E5=B9=B6=E4=BC=98=E5=8C=96=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 通过这些更改,我们优化了bot的初始化过程,更新了事件处理服务,使代码更加简洁高效。此外,工作流文件的调整增强了可读性和结构清晰度。 --- .gitea/workflows/build-test.yaml | 2 +- .../miraibot/bean/BotConfiguration.kt | 29 ++++++++++++------- .../alinadace/miraibot/config/BotConfig.kt | 2 ++ .../miraibot/service/ExampleService.kt | 13 ++++----- .../alinadace/miraibot/service/Service.kt | 2 +- 5 files changed, 28 insertions(+), 20 deletions(-) diff --git a/.gitea/workflows/build-test.yaml b/.gitea/workflows/build-test.yaml index c537cc6..cbb589f 100644 --- a/.gitea/workflows/build-test.yaml +++ b/.gitea/workflows/build-test.yaml @@ -1,6 +1,6 @@ name: Gitea Actions Demo run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀 -on: [push] +on: [ push ] jobs: Explore-Gitea-Actions: diff --git a/src/main/kotlin/info/alinadace/miraibot/bean/BotConfiguration.kt b/src/main/kotlin/info/alinadace/miraibot/bean/BotConfiguration.kt index 5fb481d..64787ba 100644 --- a/src/main/kotlin/info/alinadace/miraibot/bean/BotConfiguration.kt +++ b/src/main/kotlin/info/alinadace/miraibot/bean/BotConfiguration.kt @@ -4,6 +4,7 @@ import info.alinadace.miraibot.annotation.BotFunction import info.alinadace.miraibot.config.BotConfig import info.alinadace.miraibot.enums.LoginType import info.alinadace.miraibot.service.Service +import jakarta.annotation.PostConstruct import jakarta.annotation.Resource import net.mamoe.mirai.Bot import net.mamoe.mirai.BotFactory @@ -13,8 +14,6 @@ import net.mamoe.mirai.utils.BotConfiguration import org.springframework.boot.autoconfigure.AutoConfiguration import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.context.annotation.Bean -import java.util.Collections -import java.util.HashMap import kotlin.reflect.KClass /** @@ -26,23 +25,26 @@ import kotlin.reflect.KClass @EnableConfigurationProperties(BotConfig::class) class BotConfiguration { - @Resource - private val services: List> = Collections.emptyList(); - @Bean(initMethod = "login") - fun bot(config: BotConfig): Bot{ + @Resource + private lateinit var services: List> + + + @Bean + fun bot(config: BotConfig): Bot { return when (config.type) { - LoginType.PASSWORD -> BotFactory.newBot(config.id, config.password){ + LoginType.PASSWORD -> BotFactory.newBot(config.id, config.password) { extracted() } - LoginType.QRCODE -> BotFactory.newBot(config.id, BotAuthorization.byQRCode()){ + + LoginType.QRCODE -> BotFactory.newBot(config.id, BotAuthorization.byQRCode()) { extracted() } } } @Bean - fun botFunctionMap(): HashMap, MutableList>>{ + fun botFunctionMap(): HashMap, MutableList>> { val eventMap = HashMap, MutableList>>(); for (service in services) { val clazz = service::class @@ -50,11 +52,11 @@ class BotConfiguration { if (annotations.isEmpty()) continue var function: BotFunction? = null for (annotation in annotations) { - if (annotation is BotFunction){ + if (annotation is BotFunction) { function = annotation } } - if (function == null){ + if (function == null) { continue } for (kClass in function.value) { @@ -65,6 +67,11 @@ class BotConfiguration { return eventMap } + @PostConstruct + fun init() { + + } + private fun BotConfiguration.extracted() { fileBasedDeviceInfo() protocol = BotConfiguration.MiraiProtocol.ANDROID_WATCH diff --git a/src/main/kotlin/info/alinadace/miraibot/config/BotConfig.kt b/src/main/kotlin/info/alinadace/miraibot/config/BotConfig.kt index 9bc608a..08b29d5 100644 --- a/src/main/kotlin/info/alinadace/miraibot/config/BotConfig.kt +++ b/src/main/kotlin/info/alinadace/miraibot/config/BotConfig.kt @@ -16,10 +16,12 @@ class BotConfig(val id: Long, val password: String, val type: LoginType) { companion object { @JvmStatic val NULL_INSTANCE = BotConfig(0, "", LoginType.PASSWORD) + @JvmStatic @Value("\${bot.admin}") val ADMIN_ID: Long = 0; } + fun isNull(config: BotConfig): Boolean { return config == NULL_INSTANCE } diff --git a/src/main/kotlin/info/alinadace/miraibot/service/ExampleService.kt b/src/main/kotlin/info/alinadace/miraibot/service/ExampleService.kt index 8ba7df0..aa3299c 100644 --- a/src/main/kotlin/info/alinadace/miraibot/service/ExampleService.kt +++ b/src/main/kotlin/info/alinadace/miraibot/service/ExampleService.kt @@ -2,24 +2,23 @@ package info.alinadace.miraibot.service import info.alinadace.miraibot.annotation.BotFunction import info.alinadace.miraibot.config.BotConfig -import net.mamoe.mirai.event.events.GroupMessageEvent -import net.mamoe.mirai.event.events.MessageEvent +import net.mamoe.mirai.event.events.FriendMessageEvent import net.mamoe.mirai.message.data.PlainText /** * @author Kane * @since 2024/8/29 下午3:47 */ -@BotFunction(MessageEvent::class, GroupMessageEvent::class) -class ExampleService: Service{ +@BotFunction(FriendMessageEvent::class) +class ExampleService : Service { /** * 服务入口 */ - override fun entrance(event: MessageEvent): Boolean { + override fun entrance(event: FriendMessageEvent): Boolean { val chain = event.message - if (chain.size == 1 && chain[0] is PlainText){ + if (chain.size == 1 && chain[0] is PlainText) { if (chain[0].contentToString() == "测试" && event.sender.id == BotConfig.ADMIN_ID) { return true } @@ -30,7 +29,7 @@ class ExampleService: Service{ /** * 服务行为 */ - override suspend fun active(event: MessageEvent) { + override suspend fun active(event: FriendMessageEvent) { event.subject.sendMessage("测试成功") } } diff --git a/src/main/kotlin/info/alinadace/miraibot/service/Service.kt b/src/main/kotlin/info/alinadace/miraibot/service/Service.kt index ce93ca6..c649c7e 100644 --- a/src/main/kotlin/info/alinadace/miraibot/service/Service.kt +++ b/src/main/kotlin/info/alinadace/miraibot/service/Service.kt @@ -7,7 +7,7 @@ import net.mamoe.mirai.event.Event * @author Kane * @since 2024/8/29 下午3:49 */ -interface Service { +interface Service { /** * 服务入口 */