mirror of
https://github.com/InsanusMokrassar/PlaguBot.git
synced 2025-09-15 05:19:25 +00:00
inluding sdi
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
package dev.inmo.plagubot
|
||||
|
||||
import dev.inmo.micro_utils.coroutines.safelyWithoutExceptions
|
||||
import dev.inmo.plagubot.config.Config
|
||||
import dev.inmo.plagubot.config.*
|
||||
import dev.inmo.plagubot.config.configSerialFormat
|
||||
import dev.inmo.tgbotapi.bot.Ktor.telegramBot
|
||||
import dev.inmo.tgbotapi.extensions.api.bot.setMyCommands
|
||||
@@ -18,9 +18,11 @@ suspend inline fun initPlaguBot(
|
||||
) {
|
||||
val bot = telegramBot(config.botToken)
|
||||
|
||||
val paramsMap = config.params ?.toMap() ?: emptyMap()
|
||||
val database = config.params ?.database ?: config.database.database
|
||||
bot.buildBehaviour(scope) {
|
||||
val commands = config.plugins.flatMap {
|
||||
it.apply { invoke(config.database.database) }
|
||||
it.apply { invoke(database, paramsMap) }
|
||||
it.getCommands()
|
||||
}.let {
|
||||
val futureUnavailable = it.drop(botCommandsLimit.last)
|
||||
|
@@ -2,6 +2,7 @@ package dev.inmo.plagubot.config
|
||||
|
||||
import com.github.matfax.klassindex.KlassIndex
|
||||
import dev.inmo.plagubot.Plugin
|
||||
import dev.inmo.sdi.Module
|
||||
import kotlinx.serialization.*
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.modules.*
|
||||
@@ -37,6 +38,7 @@ internal val configSerialFormat: StringFormat
|
||||
@Serializable
|
||||
data class Config(
|
||||
val plugins: List<Plugin>,
|
||||
val database: DatabaseConfig,
|
||||
val botToken: String
|
||||
val database: DatabaseConfig = DatabaseConfig(),
|
||||
val botToken: String,
|
||||
val params: Module? = null
|
||||
)
|
||||
|
@@ -1,5 +1,6 @@
|
||||
package dev.inmo.plagubot.config
|
||||
|
||||
import dev.inmo.sdi.SDIIncluded
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.Transient
|
||||
import org.jetbrains.exposed.sql.Database
|
||||
@@ -7,7 +8,12 @@ import org.jetbrains.exposed.sql.transactions.transactionManager
|
||||
import org.sqlite.JDBC
|
||||
import java.sql.Connection
|
||||
|
||||
const val defaultDatabaseParamsName = "defaultDatabase"
|
||||
inline val Map<String, Any>.database: Database?
|
||||
get() = (get(defaultDatabaseParamsName) as? DatabaseConfig) ?.database
|
||||
|
||||
@Serializable
|
||||
@SDIIncluded
|
||||
data class DatabaseConfig(
|
||||
val url: String = "jdbc:sqlite:file:test?mode=memory&cache=shared",
|
||||
val driver: String = JDBC::class.qualifiedName!!,
|
||||
|
Reference in New Issue
Block a user