mirror of
https://github.com/InsanusMokrassar/TelegramBotApiLibraries.git
synced 2025-10-30 03:30:08 +00:00
Compare commits
21 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 62a10b9042 | |||
| a7814c61b5 | |||
| 4eb27b42ad | |||
| 5367ff5629 | |||
| 50caa740cc | |||
| 6c85e977f1 | |||
| 156a8dd8be | |||
| 3728983653 | |||
| 8e99cb9e18 | |||
| 0f569ead82 | |||
| 71f6710397 | |||
| 243926cd17 | |||
| b2d3ded0da | |||
| fbbd8e640c | |||
| 15c0f9979a | |||
| e6d04de433 | |||
| a6b837f633 | |||
| 866b016e08 | |||
| b67212ec0b | |||
| dc83bbc9aa | |||
| 14b56c659b |
@@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.libraries.cache.admins
|
|||||||
|
|
||||||
import dev.inmo.tgbotapi.extensions.utils.asGroupContentMessage
|
import dev.inmo.tgbotapi.extensions.utils.asGroupContentMessage
|
||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.ChatMember.abstracts.AdministratorChatMember
|
import dev.inmo.tgbotapi.types.chat.member.AdministratorChatMember
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.GroupContentMessage
|
import dev.inmo.tgbotapi.types.message.abstracts.GroupContentMessage
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.Message
|
import dev.inmo.tgbotapi.types.message.abstracts.Message
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ import dev.inmo.tgbotapi.bot.TelegramBot
|
|||||||
import dev.inmo.tgbotapi.extensions.api.bot.getMe
|
import dev.inmo.tgbotapi.extensions.api.bot.getMe
|
||||||
import dev.inmo.tgbotapi.extensions.api.chat.get.getChatAdministrators
|
import dev.inmo.tgbotapi.extensions.api.chat.get.getChatAdministrators
|
||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.ChatMember.abstracts.AdministratorChatMember
|
import dev.inmo.tgbotapi.types.chat.ExtendedBot
|
||||||
|
import dev.inmo.tgbotapi.types.chat.member.AdministratorChatMember
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.*
|
import dev.inmo.tgbotapi.types.message.abstracts.*
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import dev.inmo.micro_utils.coroutines.safelyWithoutExceptions
|
|||||||
import dev.inmo.micro_utils.repos.*
|
import dev.inmo.micro_utils.repos.*
|
||||||
import dev.inmo.tgbotapi.libraries.cache.admins.DefaultAdminsCacheAPIRepo
|
import dev.inmo.tgbotapi.libraries.cache.admins.DefaultAdminsCacheAPIRepo
|
||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.ChatMember.abstracts.AdministratorChatMember
|
import dev.inmo.tgbotapi.types.chat.member.AdministratorChatMember
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.channels.Channel
|
import kotlinx.coroutines.channels.Channel
|
||||||
import kotlin.coroutines.*
|
import kotlin.coroutines.*
|
||||||
|
|||||||
@@ -1,16 +1,14 @@
|
|||||||
package dev.inmo.tgbotapi.libraries.cache.admins
|
package dev.inmo.tgbotapi.libraries.cache.admins
|
||||||
|
|
||||||
import dev.inmo.micro_utils.repos.exposed.keyvalue.ExposedKeyValueRepo
|
import dev.inmo.micro_utils.repos.exposed.keyvalue.ExposedKeyValueRepo
|
||||||
import dev.inmo.micro_utils.repos.exposed.onetomany.ExposedOneToManyKeyValueRepo
|
import dev.inmo.micro_utils.repos.exposed.onetomany.ExposedKeyValuesRepo
|
||||||
import dev.inmo.micro_utils.repos.mappers.withMapper
|
import dev.inmo.micro_utils.repos.mappers.withMapper
|
||||||
import dev.inmo.tgbotapi.bot.TelegramBot
|
import dev.inmo.tgbotapi.bot.TelegramBot
|
||||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext
|
import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext
|
||||||
import dev.inmo.tgbotapi.libraries.cache.admins.micro_utils.DefaultAdminsCacheAPIRepo
|
import dev.inmo.tgbotapi.libraries.cache.admins.micro_utils.DefaultAdminsCacheAPIRepo
|
||||||
import dev.inmo.tgbotapi.libraries.cache.admins.micro_utils.DynamicAdminsCacheSettingsAPI
|
import dev.inmo.tgbotapi.libraries.cache.admins.micro_utils.DynamicAdminsCacheSettingsAPI
|
||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.ChatMember.AdministratorChatMemberImpl
|
import dev.inmo.tgbotapi.types.chat.member.*
|
||||||
import dev.inmo.tgbotapi.types.ChatMember.CreatorChatMember
|
|
||||||
import dev.inmo.tgbotapi.types.ChatMember.abstracts.AdministratorChatMember
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
import kotlinx.serialization.cbor.Cbor
|
import kotlinx.serialization.cbor.Cbor
|
||||||
@@ -38,7 +36,7 @@ fun AdminsCacheAPI(
|
|||||||
) : AdminsCacheAPI = DefaultAdminsCacheAPI(
|
) : AdminsCacheAPI = DefaultAdminsCacheAPI(
|
||||||
bot,
|
bot,
|
||||||
DefaultAdminsCacheAPIRepo(
|
DefaultAdminsCacheAPIRepo(
|
||||||
ExposedOneToManyKeyValueRepo(
|
ExposedKeyValuesRepo(
|
||||||
database,
|
database,
|
||||||
{ long("chatId") },
|
{ long("chatId") },
|
||||||
{ text("member") },
|
{ text("member") },
|
||||||
|
|||||||
@@ -21,9 +21,7 @@ val Koin.adminsPlugin: AdminsPlugin?
|
|||||||
get() = getOrNull()
|
get() = getOrNull()
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
class AdminsPlugin(
|
class AdminsPlugin : Plugin {
|
||||||
private val chatsSettings: Map<ChatId, AdminsCacheSettings>? = null
|
|
||||||
) : Plugin {
|
|
||||||
@Transient
|
@Transient
|
||||||
private val globalAdminsCacheAPI = MutableStateFlow<AdminsCacheAPI?>(null)
|
private val globalAdminsCacheAPI = MutableStateFlow<AdminsCacheAPI?>(null)
|
||||||
@Transient
|
@Transient
|
||||||
@@ -31,15 +29,10 @@ class AdminsPlugin(
|
|||||||
private val mutex = Mutex()
|
private val mutex = Mutex()
|
||||||
|
|
||||||
suspend fun adminsAPI(database: Database): AdminsCacheAPI {
|
suspend fun adminsAPI(database: Database): AdminsCacheAPI {
|
||||||
return when (chatsSettings) {
|
val flow = mutex.withLock {
|
||||||
null -> {
|
databaseToAdminsCacheAPI.getOrPut(database){ MutableStateFlow(null) }
|
||||||
val flow = mutex.withLock {
|
|
||||||
databaseToAdminsCacheAPI.getOrPut(database){ MutableStateFlow(null) }
|
|
||||||
}
|
|
||||||
flow.first { it != null }!!
|
|
||||||
}
|
|
||||||
else -> globalAdminsCacheAPI.first { it != null }!!
|
|
||||||
}
|
}
|
||||||
|
return flow.filterNotNull().first()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun Module.setupDI(database: Database, params: JsonObject) {
|
override fun Module.setupDI(database: Database, params: JsonObject) {
|
||||||
@@ -48,17 +41,10 @@ class AdminsPlugin(
|
|||||||
|
|
||||||
override suspend fun BehaviourContext.setupBotPlugin(koin: Koin) {
|
override suspend fun BehaviourContext.setupBotPlugin(koin: Koin) {
|
||||||
with(koin) {
|
with(koin) {
|
||||||
when (chatsSettings) {
|
mutex.withLock {
|
||||||
null -> {
|
val flow = databaseToAdminsCacheAPI.getOrPut(koin.get()){ MutableStateFlow(null) }
|
||||||
mutex.withLock {
|
if (flow.value == null) {
|
||||||
val flow = databaseToAdminsCacheAPI.getOrPut(koin.get()){ MutableStateFlow(null) }
|
flow.value = AdminsCacheAPI(koin.get())
|
||||||
if (flow.value == null) {
|
|
||||||
flow.value = AdminsCacheAPI(koin.get())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else -> mutex.withLock {
|
|
||||||
globalAdminsCacheAPI.value = AdminsCacheAPI(koin.get())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package dev.inmo.tgbotapi.libraries.cache.media.common
|
package dev.inmo.tgbotapi.libraries.cache.media.common
|
||||||
|
|
||||||
import dev.inmo.tgbotapi.requests.abstracts.MultipartFile
|
import dev.inmo.tgbotapi.requests.abstracts.MultipartFile
|
||||||
import dev.inmo.tgbotapi.utils.StorageFile
|
|
||||||
import io.ktor.utils.io.core.*
|
import io.ktor.utils.io.core.*
|
||||||
|
|
||||||
interface MessagesFilesCache<K> {
|
interface MessagesFilesCache<K> {
|
||||||
|
|||||||
@@ -52,6 +52,8 @@ val chatIdToMessageIdentifierSerializer = PairSerializer(
|
|||||||
|
|
||||||
val messageContentSerializer = PolymorphicSerializer<MessageContent>(MessageContent::class)
|
val messageContentSerializer = PolymorphicSerializer<MessageContent>(MessageContent::class)
|
||||||
|
|
||||||
|
inline fun <K> KeyValueRepo<K, MessageContent>.asMessageContentCache() = SimpleKeyValueMessageContentCache(this)
|
||||||
|
|
||||||
inline fun KeyValueRepo<String, String>.asMessageContentCache(
|
inline fun KeyValueRepo<String, String>.asMessageContentCache(
|
||||||
serialFormatCreator: (SerializersModule) -> StringFormat = { Json { serializersModule = it } }
|
serialFormatCreator: (SerializersModule) -> StringFormat = { Json { serializersModule = it } }
|
||||||
): StandardKeyValueRepo<Pair<ChatId, MessageIdentifier>, MessageContent> {
|
): StandardKeyValueRepo<Pair<ChatId, MessageIdentifier>, MessageContent> {
|
||||||
|
|||||||
@@ -9,12 +9,12 @@ android.enableJetifier=true
|
|||||||
kotlin_version=1.6.21
|
kotlin_version=1.6.21
|
||||||
kotlin_serialisation_core_version=1.3.3
|
kotlin_serialisation_core_version=1.3.3
|
||||||
|
|
||||||
github_release_plugin_version=2.3.7
|
github_release_plugin_version=2.4.1
|
||||||
|
|
||||||
tgbotapi_version=1.1.1
|
tgbotapi_version=2.2.1
|
||||||
micro_utils_version=0.10.4
|
micro_utils_version=0.11.13
|
||||||
exposed_version=0.38.2
|
exposed_version=0.38.2
|
||||||
plagubot_version=1.0.0
|
plagubot_version=1.4.0
|
||||||
|
|
||||||
# ANDROID
|
# ANDROID
|
||||||
|
|
||||||
@@ -33,5 +33,5 @@ dokka_version=1.6.21
|
|||||||
# Project data
|
# Project data
|
||||||
|
|
||||||
group=dev.inmo
|
group=dev.inmo
|
||||||
version=0.1.0
|
version=0.4.1
|
||||||
android_code_version=19
|
android_code_version=25
|
||||||
|
|||||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,5 +1,5 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|||||||
@@ -5,7 +5,11 @@ apply from: "$publishGradlePath"
|
|||||||
|
|
||||||
kotlin {
|
kotlin {
|
||||||
jvm {
|
jvm {
|
||||||
compilations.main.kotlinOptions.useIR = true
|
compilations.main {
|
||||||
|
kotlinOptions {
|
||||||
|
jvmTarget = "1.8"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
|
|||||||
@@ -4,7 +4,13 @@ project.group = "$group"
|
|||||||
apply from: "$publishGradlePath"
|
apply from: "$publishGradlePath"
|
||||||
|
|
||||||
kotlin {
|
kotlin {
|
||||||
jvm()
|
jvm {
|
||||||
|
compilations.main {
|
||||||
|
kotlinOptions {
|
||||||
|
jvmTarget = "1.8"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
js (IR) {
|
js (IR) {
|
||||||
browser()
|
browser()
|
||||||
nodejs()
|
nodejs()
|
||||||
|
|||||||
Reference in New Issue
Block a user