mirror of
				https://github.com/InsanusMokrassar/TelegramBotApiLibraries.git
				synced 2025-10-30 03:30:08 +00:00 
			
		
		
		
	Compare commits
	
		
			28 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 85a1048b13 | |||
| 8dc1687b8e | |||
| 2518109290 | |||
| 760e51cabb | |||
| 3a667946da | |||
| f6df96c405 | |||
| fd33cbfca3 | |||
| 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.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.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.chat.get.getChatAdministrators | ||||
| 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 kotlinx.serialization.Serializable | ||||
|  | ||||
|   | ||||
| @@ -6,7 +6,7 @@ import dev.inmo.micro_utils.coroutines.safelyWithoutExceptions | ||||
| import dev.inmo.micro_utils.repos.* | ||||
| import dev.inmo.tgbotapi.libraries.cache.admins.DefaultAdminsCacheAPIRepo | ||||
| 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.channels.Channel | ||||
| import kotlin.coroutines.* | ||||
|   | ||||
| @@ -1,16 +1,14 @@ | ||||
| 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 | ||||
| import dev.inmo.tgbotapi.libraries.cache.admins.micro_utils.DefaultAdminsCacheAPIRepo | ||||
| import dev.inmo.tgbotapi.libraries.cache.admins.micro_utils.DynamicAdminsCacheSettingsAPI | ||||
| import dev.inmo.tgbotapi.types.* | ||||
| import dev.inmo.tgbotapi.types.ChatMember.AdministratorChatMemberImpl | ||||
| import dev.inmo.tgbotapi.types.ChatMember.CreatorChatMember | ||||
| import dev.inmo.tgbotapi.types.ChatMember.abstracts.AdministratorChatMember | ||||
| import dev.inmo.tgbotapi.types.chat.member.* | ||||
| import kotlinx.coroutines.CoroutineScope | ||||
| import kotlinx.serialization.* | ||||
| import kotlinx.serialization.cbor.Cbor | ||||
| @@ -25,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)) | ||||
|     } | ||||
| @@ -38,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 }!! | ||||
|         val flow = mutex.withLock { | ||||
|             databaseToAdminsCacheAPI.getOrPut(database){ MutableStateFlow(null) } | ||||
|         } | ||||
|         return flow.filterNotNull().first() | ||||
|     } | ||||
|  | ||||
|     override fun Module.setupDI(database: Database, params: JsonObject) { | ||||
| @@ -48,17 +41,10 @@ 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) { | ||||
|                             flow.value = AdminsCacheAPI(koin.get()) | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|                 else -> mutex.withLock { | ||||
|                     globalAdminsCacheAPI.value = AdminsCacheAPI(koin.get()) | ||||
|             mutex.withLock { | ||||
|                 val flow = databaseToAdminsCacheAPI.getOrPut(koin.get()){ MutableStateFlow(null) } | ||||
|                 if (flow.value == null) { | ||||
|                     flow.value = AdminsCacheAPI(koin.get()) | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|   | ||||
| @@ -1,7 +1,6 @@ | ||||
| package dev.inmo.tgbotapi.libraries.cache.media.common | ||||
|  | ||||
| import dev.inmo.tgbotapi.requests.abstracts.MultipartFile | ||||
| import dev.inmo.tgbotapi.utils.StorageFile | ||||
| import io.ktor.utils.io.core.* | ||||
|  | ||||
| interface MessagesFilesCache<K> { | ||||
|   | ||||
| @@ -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-RC | ||||
|  | ||||
| github_release_plugin_version=2.3.7 | ||||
| github_release_plugin_version=2.4.1 | ||||
|  | ||||
| tgbotapi_version=1.1.1 | ||||
| micro_utils_version=0.10.4 | ||||
| exposed_version=0.38.2 | ||||
| plagubot_version=1.0.0 | ||||
| tgbotapi_version=3.0.2 | ||||
| micro_utils_version=0.12.0 | ||||
| exposed_version=0.39.2 | ||||
| plagubot_version=2.0.0 | ||||
|  | ||||
| # ANDROID | ||||
|  | ||||
| @@ -24,14 +24,14 @@ 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 | ||||
| espresso_core=3.4.0 | ||||
|  | ||||
| # Dokka | ||||
|  | ||||
| dokka_version=1.6.21 | ||||
| dokka_version=1.7.10 | ||||
|  | ||||
| # Project data | ||||
|  | ||||
| group=dev.inmo | ||||
| version=0.1.0 | ||||
| android_code_version=19 | ||||
| version=0.5.0 | ||||
| android_code_version=27 | ||||
|   | ||||
							
								
								
									
										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