From ab5c116ced8f153451c50ff7020f2757d8726361 Mon Sep 17 00:00:00 2001 From: Ahmad Ansori Palembani Date: Mon, 26 May 2025 07:48:21 +0700 Subject: [PATCH] refactor: Turn prefixes getter to a getter function So it can be overriden --- .../io/github/null2264/tsukumogami/core/Bot.kt | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/core/src/main/kotlin/io/github/null2264/tsukumogami/core/Bot.kt b/core/src/main/kotlin/io/github/null2264/tsukumogami/core/Bot.kt index 8ba2790..3075d05 100644 --- a/core/src/main/kotlin/io/github/null2264/tsukumogami/core/Bot.kt +++ b/core/src/main/kotlin/io/github/null2264/tsukumogami/core/Bot.kt @@ -3,10 +3,7 @@ package io.github.null2264.tsukumogami.core import co.touchlab.kermit.Logger import dev.kord.core.Kord import dev.kord.core.entity.Message -import dev.kord.core.entity.User -import dev.kord.core.event.gateway.ReadyEvent import dev.kord.core.event.message.MessageCreateEvent -import dev.kord.core.on import dev.kord.gateway.Intent import dev.kord.gateway.PrivilegedIntent import io.github.null2264.tsukumogami.core.commands.Command @@ -14,10 +11,7 @@ import io.github.null2264.tsukumogami.core.exceptions.CommandException import io.github.null2264.tsukumogami.core.exceptions.CommandNotFound import io.github.null2264.tsukumogami.core.module.BotModule import io.github.null2264.tsukumogami.core.commands.IGroup -import io.github.null2264.tsukumogami.core.ext.parseCommandAndArguments import io.github.null2264.tsukumogami.core.koin.TsukumogamiKoinComponent -import kotlin.reflect.full.callSuspend -import kotlinx.coroutines.runBlocking import org.koin.core.component.inject open class Bot internal constructor(): IGroup, TsukumogamiKoinComponent { @@ -25,8 +19,6 @@ open class Bot internal constructor(): IGroup, TsukumogamiKoinComponent { val client: Kord by inject() private val modules = mutableMapOf() private val _prefixes = mutableListOf() - val prefixes: List get() = _prefixes.toList() - internal lateinit var token: String override val allCommands: MutableMap = mutableMapOf() suspend fun self() = client.getSelf().asUser() @@ -76,7 +68,7 @@ open class Bot internal constructor(): IGroup, TsukumogamiKoinComponent { fun getCommand(name: String?) = allCommands[name] - private fun getContext(message: Message): Context { + private suspend fun getContext(message: Message): Context { val parsed = message.content.parsePrefixAndCommand() val context = Context(message, parsed?.first) context.command = getCommand(parsed?.second) @@ -110,13 +102,17 @@ open class Bot internal constructor(): IGroup, TsukumogamiKoinComponent { Logger.i { "Online! ${client.getSelf().username}" } } - private fun String.parsePrefixAndCommand(): Pair? { + open suspend fun getPrefixes(): List { + return _prefixes.toList() + } + + private suspend fun String.parsePrefixAndCommand(): Pair? { if (this.isBlank()) return null var ret: Pair? = null run { - prefixes.forEach { candidate -> + getPrefixes().forEach { candidate -> val prefix = this.substring(0, candidate.length) if (prefix != candidate) { return@forEach } val command = this.drop(candidate.length).substringBefore(' ')