refactor: Adjust koin module API

This commit is contained in:
Ahmad Ansori Palembani 2025-05-26 07:16:02 +07:00
parent 96c85a351e
commit 1a3e8a3335
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
3 changed files with 17 additions and 8 deletions

View file

@ -1,6 +1,7 @@
package io.github.null2264.tsukumogami.bot
import co.touchlab.kermit.Logger
import io.github.null2264.tsukumogami.bot.core.di.appModule
import io.github.null2264.tsukumogami.bot.core.module.generalModule
import io.github.null2264.tsukumogami.core.bot
@ -14,5 +15,7 @@ suspend fun main() {
prefixes("src!", "mm!") // mm! for backwards compatibility
modules(generalModule)
koinModules(appModule)
}.start()
}

View file

@ -25,8 +25,8 @@ class BotBuilder internal constructor(
}
}
internal var beforeKoinSetup: () -> Unit = {}
internal var afterKoinSetup: () -> Unit = {}
internal var earlyKoinModules = mutableListOf<KoinModule>()
internal var koinModules = mutableListOf<KoinModule>()
fun modules(vararg modules: BotModule) {
modules.forEach(bot::addModule)
@ -36,12 +36,12 @@ class BotBuilder internal constructor(
prefixes.forEach(bot::addPrefix)
}
fun beforeKoinSetup(declaration: () -> Unit) {
beforeKoinSetup = declaration
fun earlyKoinModules(vararg modules: KoinModule) {
earlyKoinModules.addAll(modules)
}
fun afterKoinSetup(declaration: () -> Unit) {
afterKoinSetup = declaration
fun koinModules(vararg modules: KoinModule) {
koinModules.addAll(modules)
}
}
@ -54,13 +54,13 @@ suspend fun bot(clazz: KFunction<Bot> = ::Bot, declaration: BotBuilder.() -> Uni
val holder = BotBuilder(bot)
declaration(holder)
holder.beforeKoinSetup.invoke()
holder.earlyKoinModules.forEach(::loadModule)
val kord = holder.kordBuilder(holder.token)
loadModule { single { kord } bind Kord::class }
loadModule { single { bot } bind Bot::class }
holder.afterKoinSetup.invoke()
holder.koinModules.forEach(::loadModule)
return holder.bot
}

View file

@ -15,3 +15,9 @@ fun loadModule(
return moduleObj
}
fun loadModule(module: Module): Module {
TsukumogamiKoinContext.loadKoinModules(module)
return module
}