mirror of
				https://github.com/InsanusMokrassar/TelegramBotApiLibraries.git
				synced 2025-11-04 06:00:24 +00:00 
			
		
		
		
	build fixes
This commit is contained in:
		@@ -7,8 +7,8 @@ import dev.inmo.tgbotapi.types.message.abstracts.GroupContentMessage
 | 
			
		||||
import dev.inmo.tgbotapi.types.message.abstracts.Message
 | 
			
		||||
 | 
			
		||||
interface AdminsCacheAPI {
 | 
			
		||||
    suspend fun getChatAdmins(chatId: ChatId): List<AdministratorChatMember>?
 | 
			
		||||
    suspend fun isAdmin(chatId: ChatId, userId: UserId): Boolean = getChatAdmins(chatId) ?.any {
 | 
			
		||||
    suspend fun getChatAdmins(chatId: IdChatIdentifier): List<AdministratorChatMember>?
 | 
			
		||||
    suspend fun isAdmin(chatId: IdChatIdentifier, userId: UserId): Boolean = getChatAdmins(chatId) ?.any {
 | 
			
		||||
        it.user.id == userId
 | 
			
		||||
    } == true
 | 
			
		||||
    suspend fun sentByAdmin(groupContentMessage: GroupContentMessage<*>): Boolean
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
package dev.inmo.tgbotapi.libraries.cache.admins
 | 
			
		||||
 | 
			
		||||
import com.soywiz.klock.minutes
 | 
			
		||||
import dev.inmo.tgbotapi.types.ChatId
 | 
			
		||||
import dev.inmo.tgbotapi.types.IdChatIdentifier
 | 
			
		||||
import dev.inmo.tgbotapi.types.Seconds
 | 
			
		||||
import kotlinx.coroutines.flow.SharedFlow
 | 
			
		||||
import kotlinx.serialization.Serializable
 | 
			
		||||
@@ -23,22 +23,22 @@ data class AdminsCacheSettings(
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
interface AdminsCacheSettingsAPI {
 | 
			
		||||
    suspend fun getChatSettings(chatId: ChatId): AdminsCacheSettings?
 | 
			
		||||
    suspend fun getChatSettings(chatId: IdChatIdentifier): AdminsCacheSettings?
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
interface MutableAdminsCacheSettingsAPI : AdminsCacheSettingsAPI {
 | 
			
		||||
    val chatSettingsUpdatedFlow: SharedFlow<Pair<ChatId, AdminsCacheSettings>>
 | 
			
		||||
    val chatSettingsUpdatedFlow: SharedFlow<Pair<IdChatIdentifier, AdminsCacheSettings>>
 | 
			
		||||
 | 
			
		||||
    suspend fun setChatSettings(chatId: ChatId, settings: AdminsCacheSettings)
 | 
			
		||||
    suspend fun setChatSettings(chatId: IdChatIdentifier, settings: AdminsCacheSettings)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fun AdminsCacheSettingsAPI.asMutable(): MutableAdminsCacheSettingsAPI? = this as? MutableAdminsCacheSettingsAPI
 | 
			
		||||
 | 
			
		||||
@Serializable
 | 
			
		||||
class StaticAdminsCacheSettingsAPI(
 | 
			
		||||
    private val settings: Map<ChatId, AdminsCacheSettings>
 | 
			
		||||
    private val settings: Map<IdChatIdentifier, AdminsCacheSettings>
 | 
			
		||||
) : AdminsCacheSettingsAPI {
 | 
			
		||||
    override suspend fun getChatSettings(chatId: ChatId): AdminsCacheSettings? = settings[chatId]
 | 
			
		||||
    override suspend fun getChatSettings(chatId: IdChatIdentifier): AdminsCacheSettings? = settings[chatId]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onChatMe
 | 
			
		||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.SimpleFilter
 | 
			
		||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.ByChatChatMemberUpdatedMarkerFactory
 | 
			
		||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.MarkerFactory
 | 
			
		||||
import dev.inmo.tgbotapi.types.ChatId
 | 
			
		||||
import dev.inmo.tgbotapi.types.IdChatIdentifier
 | 
			
		||||
import dev.inmo.tgbotapi.types.chat.member.AdministratorChatMember
 | 
			
		||||
import dev.inmo.tgbotapi.types.chat.member.ChatMemberUpdated
 | 
			
		||||
import dev.inmo.tgbotapi.types.update.abstracts.Update
 | 
			
		||||
@@ -35,7 +35,7 @@ suspend fun BehaviourContext.activateAdminsChangesListening(
 | 
			
		||||
 | 
			
		||||
suspend fun BehaviourContext.activateAdminsChangesListening(
 | 
			
		||||
    repo: DefaultAdminsCacheAPIRepo,
 | 
			
		||||
    allowedChats: List<ChatId>
 | 
			
		||||
    allowedChats: List<IdChatIdentifier>
 | 
			
		||||
) = activateAdminsChangesListening(
 | 
			
		||||
    repo,
 | 
			
		||||
    {
 | 
			
		||||
 
 | 
			
		||||
@@ -2,19 +2,19 @@ package dev.inmo.tgbotapi.libraries.cache.admins
 | 
			
		||||
 | 
			
		||||
import dev.inmo.tgbotapi.abstracts.FromUser
 | 
			
		||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.SimpleFilter
 | 
			
		||||
import dev.inmo.tgbotapi.types.ChatId
 | 
			
		||||
import dev.inmo.tgbotapi.types.IdChatIdentifier
 | 
			
		||||
import dev.inmo.tgbotapi.types.UserId
 | 
			
		||||
import dev.inmo.tgbotapi.types.message.abstracts.Message
 | 
			
		||||
 | 
			
		||||
fun AdminsChecker(
 | 
			
		||||
    adminsCacheAPI: AdminsCacheAPI
 | 
			
		||||
): SimpleFilter<Pair<ChatId, UserId>> = SimpleFilter {
 | 
			
		||||
): SimpleFilter<Pair<IdChatIdentifier, UserId>> = SimpleFilter {
 | 
			
		||||
    adminsCacheAPI.isAdmin(it.first, it.second)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fun <T> AdminsChecker(
 | 
			
		||||
    adminsCacheAPI: AdminsCacheAPI,
 | 
			
		||||
    mapper: (T) -> Pair<ChatId, UserId>
 | 
			
		||||
    mapper: (T) -> Pair<IdChatIdentifier, UserId>
 | 
			
		||||
): SimpleFilter<T> {
 | 
			
		||||
    val baseChecker = AdminsChecker(adminsCacheAPI)
 | 
			
		||||
 | 
			
		||||
@@ -31,7 +31,7 @@ fun MessageAdminsChecker(
 | 
			
		||||
 | 
			
		||||
fun AdminsChecker(
 | 
			
		||||
    adminsCacheAPI: AdminsCacheAPI,
 | 
			
		||||
    chatId: ChatId
 | 
			
		||||
    chatId: IdChatIdentifier
 | 
			
		||||
) = SimpleFilter<FromUser> {
 | 
			
		||||
    adminsCacheAPI.isAdmin(chatId, it.from.id)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -11,9 +11,9 @@ import dev.inmo.tgbotapi.types.message.abstracts.*
 | 
			
		||||
import kotlinx.serialization.Serializable
 | 
			
		||||
 | 
			
		||||
interface DefaultAdminsCacheAPIRepo {
 | 
			
		||||
    suspend fun getChatAdmins(chatId: ChatId): List<AdministratorChatMember>?
 | 
			
		||||
    suspend fun setChatAdmins(chatId: ChatId, chatMembers: List<AdministratorChatMember>)
 | 
			
		||||
    suspend fun lastUpdate(chatId: ChatId): DateTime?
 | 
			
		||||
    suspend fun getChatAdmins(chatId: IdChatIdentifier): List<AdministratorChatMember>?
 | 
			
		||||
    suspend fun setChatAdmins(chatId: IdChatIdentifier, chatMembers: List<AdministratorChatMember>)
 | 
			
		||||
    suspend fun lastUpdate(chatId: IdChatIdentifier): DateTime?
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@Serializable
 | 
			
		||||
@@ -29,7 +29,7 @@ class DefaultAdminsCacheAPI(
 | 
			
		||||
        bot.getMe().also { botInfo = it }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override suspend fun getChatAdmins(chatId: ChatId): List<AdministratorChatMember>? {
 | 
			
		||||
    override suspend fun getChatAdmins(chatId: IdChatIdentifier): List<AdministratorChatMember>? {
 | 
			
		||||
        val settings = settingsAPI.getChatSettings(chatId)
 | 
			
		||||
        val lastUpdate = repo.lastUpdate(chatId)
 | 
			
		||||
        return when {
 | 
			
		||||
@@ -42,7 +42,7 @@ class DefaultAdminsCacheAPI(
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override suspend fun isAdmin(chatId: ChatId, userId: UserId): Boolean {
 | 
			
		||||
    override suspend fun isAdmin(chatId: IdChatIdentifier, userId: UserId): Boolean {
 | 
			
		||||
        val settings = settingsAPI.getChatSettings(chatId)
 | 
			
		||||
        val lastUpdate = repo.lastUpdate(chatId)
 | 
			
		||||
        return when {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
package dev.inmo.tgbotapi.libraries.cache.admins
 | 
			
		||||
 | 
			
		||||
import dev.inmo.tgbotapi.types.ChatId
 | 
			
		||||
import dev.inmo.tgbotapi.types.IdChatIdentifier
 | 
			
		||||
import dev.inmo.tgbotapi.types.UserId
 | 
			
		||||
import dev.inmo.tgbotapi.types.message.abstracts.*
 | 
			
		||||
 | 
			
		||||
@@ -13,7 +13,7 @@ suspend inline fun AdminsCacheAPI.isAdmin(message: Message) = when (message) {
 | 
			
		||||
suspend inline fun AdminsCacheAPI.verifyMessageFromAdmin(message: Message) = isAdmin(message)
 | 
			
		||||
 | 
			
		||||
suspend inline fun <R : Any> AdminsCacheAPI.doIfAdmin(
 | 
			
		||||
    chatId: ChatId,
 | 
			
		||||
    chatId: IdChatIdentifier,
 | 
			
		||||
    userId: UserId,
 | 
			
		||||
    block: () -> R
 | 
			
		||||
) = if(isAdmin(chatId, userId)) {
 | 
			
		||||
 
 | 
			
		||||
@@ -3,12 +3,12 @@ package dev.inmo.tgbotapi.libraries.cache.admins
 | 
			
		||||
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.ChatId
 | 
			
		||||
import dev.inmo.tgbotapi.types.IdChatIdentifier
 | 
			
		||||
import dev.inmo.tgbotapi.types.chat.ExtendedBot
 | 
			
		||||
import dev.inmo.tgbotapi.types.chat.member.AdministratorChatMember
 | 
			
		||||
 | 
			
		||||
internal suspend fun TelegramBot.updateAdmins(
 | 
			
		||||
    chatId: ChatId,
 | 
			
		||||
    chatId: IdChatIdentifier,
 | 
			
		||||
    repo: DefaultAdminsCacheAPIRepo,
 | 
			
		||||
    botInfo: ExtendedBot? = null
 | 
			
		||||
): List<AdministratorChatMember> {
 | 
			
		||||
 
 | 
			
		||||
@@ -15,22 +15,22 @@ private sealed class RepoActions<T> {
 | 
			
		||||
    abstract val deferred: CompletableDeferred<T>
 | 
			
		||||
}
 | 
			
		||||
private class GetUpdateDateTimeRepoAction(
 | 
			
		||||
    val chatId: ChatId,
 | 
			
		||||
    val chatId: IdChatIdentifier,
 | 
			
		||||
    override val deferred: CompletableDeferred<DateTime?>
 | 
			
		||||
) : RepoActions<DateTime?>()
 | 
			
		||||
private class GetChatAdminsRepoAction(
 | 
			
		||||
    val chatId: ChatId,
 | 
			
		||||
    val chatId: IdChatIdentifier,
 | 
			
		||||
    override val deferred: CompletableDeferred<List<AdministratorChatMember>?>
 | 
			
		||||
) : RepoActions<List<AdministratorChatMember>?>()
 | 
			
		||||
private class SetChatAdminsRepoAction(
 | 
			
		||||
    val chatId: ChatId,
 | 
			
		||||
    val chatId: IdChatIdentifier,
 | 
			
		||||
    val newValue: List<AdministratorChatMember>,
 | 
			
		||||
    override val deferred: CompletableDeferred<Unit>
 | 
			
		||||
) : RepoActions<Unit>()
 | 
			
		||||
 | 
			
		||||
class DefaultAdminsCacheAPIRepoImpl(
 | 
			
		||||
    private val adminsRepo: KeyValuesRepo<ChatId, AdministratorChatMember>,
 | 
			
		||||
    private val updatesRepo: KeyValueRepo<ChatId, MilliSeconds>,
 | 
			
		||||
    private val adminsRepo: KeyValuesRepo<IdChatIdentifier, AdministratorChatMember>,
 | 
			
		||||
    private val updatesRepo: KeyValueRepo<IdChatIdentifier, MilliSeconds>,
 | 
			
		||||
    private val scope: CoroutineScope
 | 
			
		||||
) : DefaultAdminsCacheAPIRepo {
 | 
			
		||||
    private val actor = scope.actorAsync<RepoActions<*>>(Channel.UNLIMITED) {
 | 
			
		||||
@@ -54,7 +54,7 @@ class DefaultAdminsCacheAPIRepoImpl(
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override suspend fun getChatAdmins(chatId: ChatId): List<AdministratorChatMember>? {
 | 
			
		||||
    override suspend fun getChatAdmins(chatId: IdChatIdentifier): List<AdministratorChatMember>? {
 | 
			
		||||
        val deferred = CompletableDeferred<List<AdministratorChatMember>?>()
 | 
			
		||||
        actor.trySend(
 | 
			
		||||
            GetChatAdminsRepoAction(chatId, deferred)
 | 
			
		||||
@@ -64,7 +64,7 @@ class DefaultAdminsCacheAPIRepoImpl(
 | 
			
		||||
        return deferred.await()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override suspend fun setChatAdmins(chatId: ChatId, chatMembers: List<AdministratorChatMember>) {
 | 
			
		||||
    override suspend fun setChatAdmins(chatId: IdChatIdentifier, chatMembers: List<AdministratorChatMember>) {
 | 
			
		||||
        val deferred = CompletableDeferred<Unit>()
 | 
			
		||||
        actor.trySend(
 | 
			
		||||
            SetChatAdminsRepoAction(chatId, chatMembers, deferred)
 | 
			
		||||
@@ -73,7 +73,7 @@ class DefaultAdminsCacheAPIRepoImpl(
 | 
			
		||||
        }
 | 
			
		||||
        return deferred.await()
 | 
			
		||||
    }
 | 
			
		||||
    override suspend fun lastUpdate(chatId: ChatId): DateTime? {
 | 
			
		||||
    override suspend fun lastUpdate(chatId: IdChatIdentifier): DateTime? {
 | 
			
		||||
        val deferred = CompletableDeferred<DateTime?>()
 | 
			
		||||
        actor.trySend(
 | 
			
		||||
            GetUpdateDateTimeRepoAction(chatId, deferred)
 | 
			
		||||
@@ -85,7 +85,7 @@ class DefaultAdminsCacheAPIRepoImpl(
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fun DefaultAdminsCacheAPIRepo(
 | 
			
		||||
    adminsRepo: KeyValuesRepo<ChatId, AdministratorChatMember>,
 | 
			
		||||
    updatesRepo: KeyValueRepo<ChatId, MilliSeconds>,
 | 
			
		||||
    adminsRepo: KeyValuesRepo<IdChatIdentifier, AdministratorChatMember>,
 | 
			
		||||
    updatesRepo: KeyValueRepo<IdChatIdentifier, MilliSeconds>,
 | 
			
		||||
    scope: CoroutineScope
 | 
			
		||||
) = DefaultAdminsCacheAPIRepoImpl(adminsRepo, updatesRepo, scope)
 | 
			
		||||
 
 | 
			
		||||
@@ -3,22 +3,22 @@ package dev.inmo.tgbotapi.libraries.cache.admins.micro_utils
 | 
			
		||||
import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions
 | 
			
		||||
import dev.inmo.micro_utils.repos.*
 | 
			
		||||
import dev.inmo.tgbotapi.libraries.cache.admins.*
 | 
			
		||||
import dev.inmo.tgbotapi.types.ChatId
 | 
			
		||||
import dev.inmo.tgbotapi.types.IdChatIdentifier
 | 
			
		||||
import kotlinx.coroutines.CoroutineScope
 | 
			
		||||
import kotlinx.coroutines.flow.*
 | 
			
		||||
 | 
			
		||||
class DynamicAdminsCacheSettingsAPI(
 | 
			
		||||
    private val repo: KeyValueRepo<ChatId, AdminsCacheSettings>,
 | 
			
		||||
    private val repo: KeyValueRepo<IdChatIdentifier, AdminsCacheSettings>,
 | 
			
		||||
    private val scope: CoroutineScope
 | 
			
		||||
) : AdminsCacheSettingsAPI, MutableAdminsCacheSettingsAPI {
 | 
			
		||||
    override val chatSettingsUpdatedFlow: SharedFlow<Pair<ChatId, AdminsCacheSettings>>
 | 
			
		||||
    override val chatSettingsUpdatedFlow: SharedFlow<Pair<IdChatIdentifier, AdminsCacheSettings>>
 | 
			
		||||
        get() = repo.onNewValue.shareIn(scope, SharingStarted.Eagerly)
 | 
			
		||||
 | 
			
		||||
    override suspend fun setChatSettings(chatId: ChatId, settings: AdminsCacheSettings) {
 | 
			
		||||
    override suspend fun setChatSettings(chatId: IdChatIdentifier, settings: AdminsCacheSettings) {
 | 
			
		||||
        repo.set(chatId, settings)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override suspend fun getChatSettings(chatId: ChatId): AdminsCacheSettings {
 | 
			
		||||
    override suspend fun getChatSettings(chatId: IdChatIdentifier): AdminsCacheSettings {
 | 
			
		||||
        val settings = repo.get(chatId)
 | 
			
		||||
        return if (settings == null) {
 | 
			
		||||
            val newSettings = AdminsCacheSettings()
 | 
			
		||||
@@ -28,4 +28,4 @@ class DynamicAdminsCacheSettingsAPI(
 | 
			
		||||
            settings
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -38,7 +38,7 @@ fun TelegramBot.createAdminsCacheAPI(
 | 
			
		||||
            { long("chatId") },
 | 
			
		||||
            { text("member") },
 | 
			
		||||
            "AdminsTable"
 | 
			
		||||
        ).withMapper<ChatId, AdministratorChatMember, Identifier, String>(
 | 
			
		||||
        ).withMapper<IdChatIdentifier, AdministratorChatMember, Identifier, String>(
 | 
			
		||||
            keyFromToTo = { chatId },
 | 
			
		||||
            valueFromToTo = { telegramAdminsSerializationFormat.encodeToString(AdministratorChatMember.serializer(), this) },
 | 
			
		||||
            keyToToFrom = { toChatId() },
 | 
			
		||||
@@ -49,7 +49,7 @@ fun TelegramBot.createAdminsCacheAPI(
 | 
			
		||||
            { long("chatId") },
 | 
			
		||||
            { long("datetime") },
 | 
			
		||||
            "AdminsUpdatesTimesTable"
 | 
			
		||||
        ).withMapper<ChatId, Long, Identifier, Long>(
 | 
			
		||||
        ).withMapper<IdChatIdentifier, Long, Identifier, Long>(
 | 
			
		||||
            keyFromToTo = { chatId },
 | 
			
		||||
            valueFromToTo = { this },
 | 
			
		||||
            keyToToFrom = { toChatId() },
 | 
			
		||||
@@ -63,7 +63,7 @@ fun TelegramBot.createAdminsCacheAPI(
 | 
			
		||||
            { long("chatId") },
 | 
			
		||||
            { text("settings") },
 | 
			
		||||
            "DynamicAdminsCacheSettingsAPI"
 | 
			
		||||
        ).withMapper<ChatId, AdminsCacheSettings, Identifier, String>(
 | 
			
		||||
        ).withMapper<IdChatIdentifier, AdminsCacheSettings, Identifier, String>(
 | 
			
		||||
            keyFromToTo = { chatId },
 | 
			
		||||
            valueFromToTo = { telegramAdminsSerializationFormat.encodeToString(AdminsCacheSettings.serializer() , this) },
 | 
			
		||||
            keyToToFrom = { toChatId() },
 | 
			
		||||
 
 | 
			
		||||
@@ -55,7 +55,7 @@ class AdminsPlugin : Plugin {
 | 
			
		||||
                    { long("chatId") },
 | 
			
		||||
                    { text("member") },
 | 
			
		||||
                    "AdminsTable"
 | 
			
		||||
                ).withMapper<ChatId, AdministratorChatMember, Identifier, String>(
 | 
			
		||||
                ).withMapper<IdChatIdentifier, AdministratorChatMember, Identifier, String>(
 | 
			
		||||
                    keyFromToTo = { chatId },
 | 
			
		||||
                    valueFromToTo = { telegramAdminsSerializationFormat.encodeToString(this) },
 | 
			
		||||
                    keyToToFrom = { toChatId() },
 | 
			
		||||
@@ -66,7 +66,7 @@ class AdminsPlugin : Plugin {
 | 
			
		||||
                    { long("chatId") },
 | 
			
		||||
                    { long("datetime") },
 | 
			
		||||
                    "AdminsUpdatesTimesTable"
 | 
			
		||||
                ).withMapper<ChatId, Long, Identifier, Long>(
 | 
			
		||||
                ).withMapper<IdChatIdentifier, Long, Identifier, Long>(
 | 
			
		||||
                    keyFromToTo = { chatId },
 | 
			
		||||
                    valueFromToTo = { this },
 | 
			
		||||
                    keyToToFrom = { toChatId() },
 | 
			
		||||
@@ -82,7 +82,7 @@ class AdminsPlugin : Plugin {
 | 
			
		||||
                    { long("chatId") },
 | 
			
		||||
                    { text("settings") },
 | 
			
		||||
                    "DynamicAdminsCacheSettingsAPI"
 | 
			
		||||
                ).withMapper<ChatId, AdminsCacheSettings, Identifier, String>(
 | 
			
		||||
                ).withMapper<IdChatIdentifier, AdminsCacheSettings, Identifier, String>(
 | 
			
		||||
                    keyFromToTo = { chatId },
 | 
			
		||||
                    valueFromToTo = { telegramAdminsSerializationFormat.encodeToString(this) },
 | 
			
		||||
                    keyToToFrom = { toChatId() },
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot
 | 
			
		||||
import dev.inmo.tgbotapi.requests.DownloadFileStream
 | 
			
		||||
import dev.inmo.tgbotapi.requests.get.GetFile
 | 
			
		||||
import dev.inmo.tgbotapi.requests.send.media.*
 | 
			
		||||
import dev.inmo.tgbotapi.types.ChatId
 | 
			
		||||
import dev.inmo.tgbotapi.types.IdChatIdentifier
 | 
			
		||||
import dev.inmo.tgbotapi.types.media.*
 | 
			
		||||
import dev.inmo.tgbotapi.types.message.content.MediaContent
 | 
			
		||||
import dev.inmo.tgbotapi.types.message.content.MessageContent
 | 
			
		||||
@@ -13,7 +13,7 @@ import io.ktor.utils.io.core.Input
 | 
			
		||||
 | 
			
		||||
class DefaultMessageContentCache<K>(
 | 
			
		||||
    private val bot: TelegramBot,
 | 
			
		||||
    private val filesRefreshingChatId: ChatId,
 | 
			
		||||
    private val filesRefreshingChatId: IdChatIdentifier,
 | 
			
		||||
    private val simpleMessageContentCache: MessagesSimpleCache<K>,
 | 
			
		||||
    private val mediaFileActualityChecker: MediaFileActualityChecker = MediaFileActualityChecker.WithDelay(
 | 
			
		||||
        MediaFileActualityChecker.Default(filesRefreshingChatId)
 | 
			
		||||
@@ -111,7 +111,7 @@ class DefaultMessageContentCache<K>(
 | 
			
		||||
    companion object {
 | 
			
		||||
        operator fun invoke(
 | 
			
		||||
            bot: TelegramBot,
 | 
			
		||||
            filesRefreshingChatId: ChatId,
 | 
			
		||||
            filesRefreshingChatId: IdChatIdentifier,
 | 
			
		||||
            simpleMessageContentCache: MessagesSimpleCache<String> = InMemoryMessagesSimpleCache(),
 | 
			
		||||
            mediaFileActualityChecker: MediaFileActualityChecker = MediaFileActualityChecker.WithDelay(
 | 
			
		||||
                MediaFileActualityChecker.Default(filesRefreshingChatId)
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot
 | 
			
		||||
import dev.inmo.tgbotapi.requests.DeleteMessage
 | 
			
		||||
import dev.inmo.tgbotapi.requests.abstracts.FileId
 | 
			
		||||
import dev.inmo.tgbotapi.types.ChatId
 | 
			
		||||
import dev.inmo.tgbotapi.types.IdChatIdentifier
 | 
			
		||||
import dev.inmo.tgbotapi.types.MilliSeconds
 | 
			
		||||
import dev.inmo.tgbotapi.types.message.content.MediaContent
 | 
			
		||||
 | 
			
		||||
@@ -14,7 +15,7 @@ fun interface MediaFileActualityChecker {
 | 
			
		||||
    suspend fun TelegramBot.saved(mediaContent: MediaContent) {}
 | 
			
		||||
 | 
			
		||||
    class Default(
 | 
			
		||||
        private val checkingChatId: ChatId
 | 
			
		||||
        private val checkingChatId: IdChatIdentifier
 | 
			
		||||
    ) : MediaFileActualityChecker {
 | 
			
		||||
        override suspend fun TelegramBot.isActual(mediaContent: MediaContent): Boolean {
 | 
			
		||||
            return runCatching {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user