All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.insanusmokrassar.AutoPostTelegramBot.base.plugins.DefaultPluginManager.kt Maven / Gradle / Ivy

package com.github.insanusmokrassar.AutoPostTelegramBot.base.plugins

import com.github.insanusmokrassar.AutoPostTelegramBot.base.models.FinalConfig
import com.pengrad.telegrambot.TelegramBot
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.experimental.runBlocking

class DefaultPluginManager(
    pluginsCollection: Collection
) : PluginManager {
    override val plugins: List = pluginsCollection.toList()
    constructor(pluginsConfigs: List) : this(
        pluginsConfigs.mapNotNull {
            it.newInstance() ?.also {
                commonLogger.info("Plugin ${it.name} instantiated")
            }
        }
    )

    override fun onInit(bot: TelegramBot, baseConfig: FinalConfig) {
        val logsChatId = baseConfig.logsChatId
        runBlocking {
            plugins.map {
                launch {
                    it.onInit(
                        bot,
                        baseConfig,
                        this@DefaultPluginManager
                    )
                    commonLogger.info("Plugin ${it.name} was init")
                }
            }.forEach {
                it.join()
            }
            commonLogger.info("Plugins was initiated")
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy