Compare commits

...

38 Commits

Author SHA1 Message Date
b309d6c946 Update libs.versions.toml 2022-08-06 00:42:58 +06:00
4f2b0aa40c Update libs.versions.toml 2022-08-05 22:52:59 +06:00
2d38292b55 Update CHANGELOG.md 2022-08-05 22:11:37 +06:00
e177f3e47a Update libs.versions.toml 2022-08-05 22:08:01 +06:00
2872395045 start 2.0.0 2022-08-05 22:06:39 +06:00
e49302b750 Merge pull request #38 from InsanusMokrassar/1.4.1
1.4.1
2022-08-03 09:20:34 +06:00
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
9 changed files with 107 additions and 33 deletions

View File

@@ -1,5 +1,72 @@
# Changelog # Changelog
## 2.0.0
* `Versions`:
* `kotlin`: `1.7.10`
* `serialization`: `1.4.0-RC`
* `tgbotapi`: `3.0.0`
* `kslog`: `0.5.0`
* `uuid`: `0.5.0`
* `exposed`: `0.39.2`
* `microutils`: `0.12.0`
## 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 ## 1.1.1
* `Versions` * `Versions`

View File

@@ -1,7 +1,9 @@
package dev.inmo.plagubot package dev.inmo.plagubot
import dev.inmo.kslog.common.* import dev.inmo.kslog.common.KSLog
import dev.inmo.plagubot.config.* 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.InternalSerializationApi
import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonObject
import java.io.File 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.api.send.reply
import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onCommand 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.Json
import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.JsonObject
import org.jetbrains.exposed.sql.Database import org.jetbrains.exposed.sql.Database
import org.koin.core.Koin 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.core.module.Module
import org.koin.dsl.module
@Serializable @Serializable
@SerialName("Hello") @SerialName("Hello")
class HelloPlugin : Plugin { object HelloPlugin : Plugin {
@Serializable @Serializable
data class HelloPluginConfig( data class HelloPluginConfig(
val print: String val print: String

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,26 +1,26 @@
[versions] [versions]
kt = "1.6.21" kt = "1.7.10"
kt-serialization = "1.3.3" kt-serialization = "1.4.0-RC"
kt-coroutines = "1.6.2" kt-coroutines = "1.6.4"
microutils = "0.11.0" microutils = "0.12.0"
tgbotapi = "2.0.2" tgbotapi = "3.0.2"
kslog = "0.3.0" kslog = "0.5.0"
jb-exposed = "0.38.2" jb-exposed = "0.39.2"
jb-dokka = "1.6.21" jb-dokka = "1.7.10"
sqlite = "3.36.0.3" sqlite = "3.36.0.3"
klock = "2.7.0" klock = "3.0.0"
uuid = "0.4.1" uuid = "0.5.0"
ktor = "2.0.2" ktor = "2.0.3"
gh-release = "2.3.7" gh-release = "2.4.1"
android-gradle = "7.0.4" android-gradle = "7.2.2"
dexcount = "3.1.0" dexcount = "3.1.0"
koin = "3.2.0" koin = "3.2.0"

View File

@@ -13,7 +13,8 @@ class PluginSerializer : KSerializer<Plugin> {
get() = String.serializer().descriptor get() = String.serializer().descriptor
override fun deserialize(decoder: Decoder): Plugin { 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) { override fun serialize(encoder: Encoder, value: Plugin) {