mirror of
				https://github.com/InsanusMokrassar/TelegramBotApiLibraries.git
				synced 2025-11-04 06:00:24 +00:00 
			
		
		
		
	Compare commits
	
		
			28 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 961d7d9afd | |||
| 6a84bcb860 | |||
| cd1ba035ac | |||
| 6f443c1617 | |||
| 85a1048b13 | |||
| 8dc1687b8e | |||
| 2518109290 | |||
| 760e51cabb | |||
| 3a667946da | |||
| f6df96c405 | |||
| fd33cbfca3 | |||
| 62a10b9042 | |||
| a7814c61b5 | |||
| 4eb27b42ad | |||
| 5367ff5629 | |||
| 50caa740cc | |||
| 6c85e977f1 | |||
| 156a8dd8be | |||
| 3728983653 | |||
| 8e99cb9e18 | |||
| 0f569ead82 | |||
| 71f6710397 | |||
| 243926cd17 | |||
| b2d3ded0da | |||
| fbbd8e640c | |||
| 15c0f9979a | |||
| e6d04de433 | |||
| a6b837f633 | 
@@ -1,7 +1,7 @@
 | 
			
		||||
package dev.inmo.tgbotapi.libraries.cache.admins
 | 
			
		||||
 | 
			
		||||
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.tgbotapi.bot.TelegramBot
 | 
			
		||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext
 | 
			
		||||
@@ -23,7 +23,7 @@ private val serializationFormat = Json {
 | 
			
		||||
    serializersModule = SerializersModule {
 | 
			
		||||
        polymorphic(AdministratorChatMember::class) {
 | 
			
		||||
            subclass(AdministratorChatMemberImpl::class, AdministratorChatMemberImpl.serializer())
 | 
			
		||||
            subclass(CreatorChatMember::class, CreatorChatMember.serializer())
 | 
			
		||||
            subclass(OwnerChatMember::class, OwnerChatMember.serializer())
 | 
			
		||||
        }
 | 
			
		||||
        contextual(AdministratorChatMember::class, PolymorphicSerializer(AdministratorChatMember::class))
 | 
			
		||||
    }
 | 
			
		||||
@@ -36,7 +36,7 @@ fun AdminsCacheAPI(
 | 
			
		||||
) : AdminsCacheAPI = DefaultAdminsCacheAPI(
 | 
			
		||||
    bot,
 | 
			
		||||
    DefaultAdminsCacheAPIRepo(
 | 
			
		||||
        ExposedOneToManyKeyValueRepo(
 | 
			
		||||
        ExposedKeyValuesRepo(
 | 
			
		||||
            database,
 | 
			
		||||
            { long("chatId") },
 | 
			
		||||
            { text("member") },
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,7 @@ val Koin.adminsPlugin: AdminsPlugin?
 | 
			
		||||
    get() = getOrNull()
 | 
			
		||||
 | 
			
		||||
@Serializable
 | 
			
		||||
class AdminsPlugin(
 | 
			
		||||
    private val chatsSettings: Map<ChatId, AdminsCacheSettings>? = null
 | 
			
		||||
) : Plugin {
 | 
			
		||||
class AdminsPlugin : Plugin {
 | 
			
		||||
    @Transient
 | 
			
		||||
    private val globalAdminsCacheAPI = MutableStateFlow<AdminsCacheAPI?>(null)
 | 
			
		||||
    @Transient
 | 
			
		||||
@@ -31,15 +29,10 @@ class AdminsPlugin(
 | 
			
		||||
    private val mutex = Mutex()
 | 
			
		||||
 | 
			
		||||
    suspend fun adminsAPI(database: Database): AdminsCacheAPI {
 | 
			
		||||
        return when (chatsSettings) {
 | 
			
		||||
            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) {
 | 
			
		||||
@@ -48,8 +41,6 @@ class AdminsPlugin(
 | 
			
		||||
 | 
			
		||||
    override suspend fun BehaviourContext.setupBotPlugin(koin: Koin) {
 | 
			
		||||
        with(koin) {
 | 
			
		||||
            when (chatsSettings) {
 | 
			
		||||
                null -> {
 | 
			
		||||
            mutex.withLock {
 | 
			
		||||
                val flow = databaseToAdminsCacheAPI.getOrPut(koin.get()){ MutableStateFlow(null) }
 | 
			
		||||
                if (flow.value == null) {
 | 
			
		||||
@@ -57,10 +48,5 @@ class AdminsPlugin(
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
                else -> mutex.withLock {
 | 
			
		||||
                    globalAdminsCacheAPI.value = AdminsCacheAPI(koin.get())
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -52,6 +52,8 @@ val chatIdToMessageIdentifierSerializer = PairSerializer(
 | 
			
		||||
 | 
			
		||||
val messageContentSerializer = PolymorphicSerializer<MessageContent>(MessageContent::class)
 | 
			
		||||
 | 
			
		||||
inline fun <K> KeyValueRepo<K, MessageContent>.asMessageContentCache() = SimpleKeyValueMessageContentCache(this)
 | 
			
		||||
 | 
			
		||||
inline fun KeyValueRepo<String, String>.asMessageContentCache(
 | 
			
		||||
    serialFormatCreator: (SerializersModule) -> StringFormat = { Json { serializersModule = it } }
 | 
			
		||||
): StandardKeyValueRepo<Pair<ChatId, MessageIdentifier>, MessageContent> {
 | 
			
		||||
 
 | 
			
		||||
@@ -6,15 +6,15 @@ kotlin.incremental.js=true
 | 
			
		||||
android.useAndroidX=true
 | 
			
		||||
android.enableJetifier=true
 | 
			
		||||
 | 
			
		||||
kotlin_version=1.6.21
 | 
			
		||||
kotlin_serialisation_core_version=1.3.3
 | 
			
		||||
kotlin_version=1.7.10
 | 
			
		||||
kotlin_serialisation_core_version=1.4.0
 | 
			
		||||
 | 
			
		||||
github_release_plugin_version=2.3.7
 | 
			
		||||
github_release_plugin_version=2.4.1
 | 
			
		||||
 | 
			
		||||
tgbotapi_version=2.0.0
 | 
			
		||||
micro_utils_version=0.10.4
 | 
			
		||||
exposed_version=0.38.2
 | 
			
		||||
plagubot_version=1.1.0
 | 
			
		||||
tgbotapi_version=3.2.0
 | 
			
		||||
micro_utils_version=0.12.5
 | 
			
		||||
exposed_version=0.39.2
 | 
			
		||||
plagubot_version=2.2.0
 | 
			
		||||
 | 
			
		||||
# ANDROID
 | 
			
		||||
 | 
			
		||||
@@ -23,15 +23,15 @@ android_compileSdkVersion=32
 | 
			
		||||
android_buildToolsVersion=32.0.0
 | 
			
		||||
dexcount_version=3.1.0
 | 
			
		||||
junit_version=4.12
 | 
			
		||||
test_ext_junit_version=1.1.2
 | 
			
		||||
espresso_core=3.3.0
 | 
			
		||||
test_ext_junit_version=1.1.3
 | 
			
		||||
espresso_core=3.4.0
 | 
			
		||||
 | 
			
		||||
# Dokka
 | 
			
		||||
 | 
			
		||||
dokka_version=1.6.21
 | 
			
		||||
dokka_version=1.7.10
 | 
			
		||||
 | 
			
		||||
# Project data
 | 
			
		||||
 | 
			
		||||
group=dev.inmo
 | 
			
		||||
version=0.2.0
 | 
			
		||||
android_code_version=20
 | 
			
		||||
version=0.5.2
 | 
			
		||||
android_code_version=29
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								gradle/wrapper/gradle-wrapper.properties
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								gradle/wrapper/gradle-wrapper.properties
									
									
									
									
										vendored
									
									
								
							@@ -1,5 +1,5 @@
 | 
			
		||||
distributionBase=GRADLE_USER_HOME
 | 
			
		||||
distributionPath=wrapper/dists
 | 
			
		||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-bin.zip
 | 
			
		||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
 | 
			
		||||
zipStoreBase=GRADLE_USER_HOME
 | 
			
		||||
zipStorePath=wrapper/dists
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,11 @@ apply from: "$publishGradlePath"
 | 
			
		||||
 | 
			
		||||
kotlin {
 | 
			
		||||
    jvm {
 | 
			
		||||
        compilations.main.kotlinOptions.useIR = true
 | 
			
		||||
        compilations.main {
 | 
			
		||||
            kotlinOptions {
 | 
			
		||||
                jvmTarget = "1.8"
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    sourceSets {
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,13 @@ project.group = "$group"
 | 
			
		||||
apply from: "$publishGradlePath"
 | 
			
		||||
 | 
			
		||||
kotlin {
 | 
			
		||||
    jvm()
 | 
			
		||||
    jvm {
 | 
			
		||||
        compilations.main {
 | 
			
		||||
            kotlinOptions {
 | 
			
		||||
                jvmTarget = "1.8"
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    js (IR) {
 | 
			
		||||
        browser()
 | 
			
		||||
        nodejs()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user