Compare commits

...

33 Commits
1.1.1 ... 1.4.1

Author SHA1 Message Date
60dac2067a Update CHANGELOG.md 2022-08-03 09:20:10 +06:00
fc1888923f Update libs.versions.toml 2022-08-01 09:33:27 +06:00
703d3b1d64 Update gradle.properties 2022-08-01 09:32:21 +06:00
34383c1f82 Merge pull request #37 from InsanusMokrassar/1.4.0
1.4.0
2022-07-30 20:32:21 +06:00
9ec5303aed Update CHANGELOG.md 2022-07-30 18:29:45 +06:00
351f6e59e1 Update libs.versions.toml 2022-07-30 18:29:26 +06:00
d4bc89eb2f start 1.4.0 and update kslog 2022-07-30 15:27:28 +06:00
00b8197b71 Merge pull request #36 from InsanusMokrassar/1.3.1
1.3.1
2022-07-22 21:11:52 +06:00
a090b4f13f Update CHANGELOG.md 2022-07-22 21:10:05 +06:00
b377b5ed4f Update dependencies 2022-07-22 20:03:24 +06:00
dde3317323 start 1.3.1 2022-07-22 20:02:33 +06:00
40de085f26 Merge pull request #35 from InsanusMokrassar/1.3.0
1.3.0
2022-07-11 12:32:34 +06:00
ce5b98d6c8 update kotlin 2022-07-11 12:27:55 +06:00
058c239690 start 1.3.0 2022-07-11 12:17:08 +06:00
43d49ac3cd Update CHANGELOG.md 2022-07-10 00:21:27 +06:00
b0fbcfd54f Merge pull request #34 from InsanusMokrassar/1.2.3
1.2.3
2022-07-10 00:20:53 +06:00
8f726cee82 start 1.2.3 and update tgbotapi 2022-07-09 23:11:29 +06:00
998968a9c1 Update github_release.gradle 2022-07-09 09:47:34 +06:00
d8d1860c5a Merge pull request #33 from InsanusMokrassar/1.2.2
1.2.2
2022-07-09 09:44:56 +06:00
7ffd5a1433 update dependencies 2022-07-09 00:12:24 +06:00
05e2ec1c0d start 1.2.2 2022-07-09 00:07:07 +06:00
819ed7720a Merge pull request #32 from InsanusMokrassar/1.2.1
1.2.1
2022-06-26 15:15:38 +06:00
c99e4ee188 Update CHANGELOG.md 2022-06-26 14:46:09 +06:00
a408cc5099 Update CHANGELOG.md 2022-06-26 14:45:55 +06:00
f1d3f48a6b Update libs.versions.toml 2022-06-26 14:44:13 +06:00
2777a260ae Update gradle.properties 2022-06-26 14:42:44 +06:00
155b9865a8 Merge pull request #31 from InsanusMokrassar/1.2.0
1.2.0
2022-06-22 09:05:33 +06:00
ecc17e50b9 update dependencies 2022-06-21 23:54:25 +06:00
ffafee3f43 start 1.2.0 2022-06-21 23:53:38 +06:00
b99bb9ee64 Merge pull request #30 from InsanusMokrassar/1.1.2
1.1.2
2022-06-20 20:59:53 +06:00
0dff596926 update dependencies and optimize imports 2022-06-20 20:58:38 +06:00
e0a19bb5e5 start 1.1.2 + add opportunity to load object plugins 2022-06-20 20:52:42 +06:00
5ec1c8c55f Merge pull request #29 from InsanusMokrassar/1.1.1
1.1.1
2022-06-11 19:20:33 +06:00
9 changed files with 89 additions and 26 deletions

View File

@@ -1,5 +1,61 @@
# Changelog
## 1.4.1
* `Versions`:
* `tgbotapi`: `2.2.2`
* `kslog`: `0.4.2`
## 1.4.0
* `Versions`:
* `kslog`: `0.4.1`
## 1.3.1
* `Versions`:
* `tgbotapi`: `2.2.1`
* `microutils`: `0.11.13`
## 1.3.0
* `Versions`
* `tgbotapi`: `2.2.0`
## 1.2.3
* `Versions`
* `tgbotapi`: `2.1.3`
## 1.2.2
* `Versions`
* `tgbotapi`: `2.1.2`
* `microutils`: `0.11.12`
* `coroutines`: `1.6.3`
* `ktor`: `2.0.3`
## 1.2.1
* `Versions`
* `tgbotapi`: `2.1.1`
* `microutils`: `0.11.6`
* `kslog`: `0.3.2`
## 1.2.0
* `Versions`
* `tgbotapi`: `2.1.0`
## 1.1.2
* `Versions`
* `tgbotapi`: `2.0.3`
* `microutils`: `0.11.3`
* `kslog`: `0.3.1`
* `Plugin`:
* Now it is possible to use `object`s of plugins instead of classes
## 1.1.1
* `Versions`

View File

@@ -1,7 +1,9 @@
package dev.inmo.plagubot
import dev.inmo.kslog.common.*
import dev.inmo.plagubot.config.*
import dev.inmo.kslog.common.KSLog
import dev.inmo.kslog.common.i
import dev.inmo.plagubot.config.Config
import dev.inmo.plagubot.config.defaultJsonFormat
import kotlinx.serialization.InternalSerializationApi
import kotlinx.serialization.json.jsonObject
import java.io.File

View File

@@ -5,20 +5,17 @@ import dev.inmo.tgbotapi.extensions.api.bot.getMe
import dev.inmo.tgbotapi.extensions.api.send.reply
import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onCommand
import kotlinx.serialization.*
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonObject
import org.jetbrains.exposed.sql.Database
import org.koin.core.Koin
import org.koin.core.KoinApplication
import org.koin.core.component.KoinComponent
import org.koin.core.component.get
import org.koin.core.module.Module
import org.koin.dsl.module
@Serializable
@SerialName("Hello")
class HelloPlugin : Plugin {
object HelloPlugin : Plugin {
@Serializable
data class HelloPluginConfig(
val print: String

View File

@@ -1,11 +1,14 @@
package dev.inmo.plagubot
import dev.inmo.kslog.common.*
import dev.inmo.micro_utils.common.Warning
import dev.inmo.micro_utils.coroutines.runCatchingSafely
import dev.inmo.plagubot.config.*
import dev.inmo.plagubot.config.Config
import dev.inmo.plagubot.config.defaultJsonFormat
import dev.inmo.tgbotapi.bot.ktor.telegramBot
import dev.inmo.tgbotapi.extensions.api.webhook.deleteWebhook
import dev.inmo.tgbotapi.extensions.behaviour_builder.*
import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext
import dev.inmo.tgbotapi.extensions.behaviour_builder.buildBehaviour
import dev.inmo.tgbotapi.extensions.utils.updates.retrieving.startGettingOfUpdatesByLongPolling
import kotlinx.coroutines.*
import kotlinx.serialization.Serializable
@@ -18,12 +21,14 @@ import org.koin.core.context.GlobalContext
import org.koin.core.module.Module
import org.koin.core.scope.Scope
import org.koin.dsl.module
import java.util.logging.Level
import java.util.logging.Logger
val Scope.plagubot: PlaguBot
get() = get()
val Koin.plagubot: PlaguBot
get() = get()
@OptIn(Warning::class)
@Serializable
data class PlaguBot(
private val json: JsonObject,
@@ -56,17 +61,17 @@ data class PlaguBot(
}
override suspend fun BehaviourContext.setupBotPlugin(koin: Koin) {
config.plugins.map {
config.plugins.map { plugin ->
launch {
runCatchingSafely {
logger.i("Start loading of $it")
with(it) {
logger.i("Start loading of $plugin")
with(plugin) {
setupBotPlugin(koin)
}
}.onFailure { e ->
logger.w("Unable to load bot part of $it", e)
logger.w("Unable to load bot part of $plugin", e)
}.onSuccess {
logger.i("Complete loading of $it")
logger.i("Complete loading of $plugin")
}
}
}.joinAll()

View File

@@ -1,9 +1,11 @@
package dev.inmo.plagubot.config
import dev.inmo.micro_utils.common.Warning
import dev.inmo.plagubot.Plugin
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Warning("This API is internal and can be changed without notifications of mentions of changes")
@Serializable
data class Config(
val botToken: String,

View File

@@ -23,7 +23,7 @@ if (new File(projectDir, "secret.gradle").exists()) {
owner "InsanusMokrassar"
repo "PlaguBot"
tagName "${project.version}"
tagName "v${project.version}"
releaseName "${project.version}"
targetCommitish "${project.version}"

View File

@@ -5,4 +5,4 @@ kotlin.js.generate.externals=true
kotlin.incremental=true
group=dev.inmo
version=1.1.1
version=1.4.1

View File

@@ -2,11 +2,11 @@
kt = "1.6.21"
kt-serialization = "1.3.3"
kt-coroutines = "1.6.2"
kt-coroutines = "1.6.4"
microutils = "0.11.0"
tgbotapi = "2.0.2"
kslog = "0.3.0"
microutils = "0.11.13"
tgbotapi = "2.2.2"
kslog = "0.4.2"
jb-exposed = "0.38.2"
jb-dokka = "1.6.21"
@@ -16,9 +16,9 @@ sqlite = "3.36.0.3"
klock = "2.7.0"
uuid = "0.4.1"
ktor = "2.0.2"
ktor = "2.0.3"
gh-release = "2.3.7"
gh-release = "2.4.1"
android-gradle = "7.0.4"
dexcount = "3.1.0"

View File

@@ -13,7 +13,8 @@ class PluginSerializer : KSerializer<Plugin> {
get() = String.serializer().descriptor
override fun deserialize(decoder: Decoder): Plugin {
return Class.forName(decoder.decodeString()).getDeclaredConstructor().newInstance() as Plugin
val kclass = Class.forName(decoder.decodeString()).kotlin
return (kclass.objectInstance ?: kclass.constructors.first { it.parameters.isEmpty() }.call()) as Plugin
}
override fun serialize(encoder: Encoder, value: Plugin) {