build fixes

This commit is contained in:
InsanusMokrassar 2022-11-10 21:25:31 +06:00
parent a4662b084a
commit 4bb1f54ddb
13 changed files with 50 additions and 49 deletions

View File

@ -7,8 +7,8 @@ import dev.inmo.tgbotapi.types.message.abstracts.GroupContentMessage
import dev.inmo.tgbotapi.types.message.abstracts.Message import dev.inmo.tgbotapi.types.message.abstracts.Message
interface AdminsCacheAPI { interface AdminsCacheAPI {
suspend fun getChatAdmins(chatId: ChatId): List<AdministratorChatMember>? suspend fun getChatAdmins(chatId: IdChatIdentifier): List<AdministratorChatMember>?
suspend fun isAdmin(chatId: ChatId, userId: UserId): Boolean = getChatAdmins(chatId) ?.any { suspend fun isAdmin(chatId: IdChatIdentifier, userId: UserId): Boolean = getChatAdmins(chatId) ?.any {
it.user.id == userId it.user.id == userId
} == true } == true
suspend fun sentByAdmin(groupContentMessage: GroupContentMessage<*>): Boolean suspend fun sentByAdmin(groupContentMessage: GroupContentMessage<*>): Boolean

View File

@ -1,7 +1,7 @@
package dev.inmo.tgbotapi.libraries.cache.admins package dev.inmo.tgbotapi.libraries.cache.admins
import com.soywiz.klock.minutes import com.soywiz.klock.minutes
import dev.inmo.tgbotapi.types.ChatId import dev.inmo.tgbotapi.types.IdChatIdentifier
import dev.inmo.tgbotapi.types.Seconds import dev.inmo.tgbotapi.types.Seconds
import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.SharedFlow
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
@ -23,22 +23,22 @@ data class AdminsCacheSettings(
} }
interface AdminsCacheSettingsAPI { interface AdminsCacheSettingsAPI {
suspend fun getChatSettings(chatId: ChatId): AdminsCacheSettings? suspend fun getChatSettings(chatId: IdChatIdentifier): AdminsCacheSettings?
} }
interface MutableAdminsCacheSettingsAPI : AdminsCacheSettingsAPI { 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 fun AdminsCacheSettingsAPI.asMutable(): MutableAdminsCacheSettingsAPI? = this as? MutableAdminsCacheSettingsAPI
@Serializable @Serializable
class StaticAdminsCacheSettingsAPI( class StaticAdminsCacheSettingsAPI(
private val settings: Map<ChatId, AdminsCacheSettings> private val settings: Map<IdChatIdentifier, AdminsCacheSettings>
) : AdminsCacheSettingsAPI { ) : AdminsCacheSettingsAPI {
override suspend fun getChatSettings(chatId: ChatId): AdminsCacheSettings? = settings[chatId] override suspend fun getChatSettings(chatId: IdChatIdentifier): AdminsCacheSettings? = settings[chatId]
} }

View File

@ -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.SimpleFilter
import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.ByChatChatMemberUpdatedMarkerFactory 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.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.AdministratorChatMember
import dev.inmo.tgbotapi.types.chat.member.ChatMemberUpdated import dev.inmo.tgbotapi.types.chat.member.ChatMemberUpdated
import dev.inmo.tgbotapi.types.update.abstracts.Update import dev.inmo.tgbotapi.types.update.abstracts.Update
@ -35,7 +35,7 @@ suspend fun BehaviourContext.activateAdminsChangesListening(
suspend fun BehaviourContext.activateAdminsChangesListening( suspend fun BehaviourContext.activateAdminsChangesListening(
repo: DefaultAdminsCacheAPIRepo, repo: DefaultAdminsCacheAPIRepo,
allowedChats: List<ChatId> allowedChats: List<IdChatIdentifier>
) = activateAdminsChangesListening( ) = activateAdminsChangesListening(
repo, repo,
{ {

View File

@ -2,19 +2,19 @@ package dev.inmo.tgbotapi.libraries.cache.admins
import dev.inmo.tgbotapi.abstracts.FromUser import dev.inmo.tgbotapi.abstracts.FromUser
import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.SimpleFilter 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.UserId
import dev.inmo.tgbotapi.types.message.abstracts.Message import dev.inmo.tgbotapi.types.message.abstracts.Message
fun AdminsChecker( fun AdminsChecker(
adminsCacheAPI: AdminsCacheAPI adminsCacheAPI: AdminsCacheAPI
): SimpleFilter<Pair<ChatId, UserId>> = SimpleFilter { ): SimpleFilter<Pair<IdChatIdentifier, UserId>> = SimpleFilter {
adminsCacheAPI.isAdmin(it.first, it.second) adminsCacheAPI.isAdmin(it.first, it.second)
} }
fun <T> AdminsChecker( fun <T> AdminsChecker(
adminsCacheAPI: AdminsCacheAPI, adminsCacheAPI: AdminsCacheAPI,
mapper: (T) -> Pair<ChatId, UserId> mapper: (T) -> Pair<IdChatIdentifier, UserId>
): SimpleFilter<T> { ): SimpleFilter<T> {
val baseChecker = AdminsChecker(adminsCacheAPI) val baseChecker = AdminsChecker(adminsCacheAPI)
@ -31,7 +31,7 @@ fun MessageAdminsChecker(
fun AdminsChecker( fun AdminsChecker(
adminsCacheAPI: AdminsCacheAPI, adminsCacheAPI: AdminsCacheAPI,
chatId: ChatId chatId: IdChatIdentifier
) = SimpleFilter<FromUser> { ) = SimpleFilter<FromUser> {
adminsCacheAPI.isAdmin(chatId, it.from.id) adminsCacheAPI.isAdmin(chatId, it.from.id)
} }

View File

@ -11,9 +11,9 @@ import dev.inmo.tgbotapi.types.message.abstracts.*
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
interface DefaultAdminsCacheAPIRepo { interface DefaultAdminsCacheAPIRepo {
suspend fun getChatAdmins(chatId: ChatId): List<AdministratorChatMember>? suspend fun getChatAdmins(chatId: IdChatIdentifier): List<AdministratorChatMember>?
suspend fun setChatAdmins(chatId: ChatId, chatMembers: List<AdministratorChatMember>) suspend fun setChatAdmins(chatId: IdChatIdentifier, chatMembers: List<AdministratorChatMember>)
suspend fun lastUpdate(chatId: ChatId): DateTime? suspend fun lastUpdate(chatId: IdChatIdentifier): DateTime?
} }
@Serializable @Serializable
@ -29,7 +29,7 @@ class DefaultAdminsCacheAPI(
bot.getMe().also { botInfo = it } 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 settings = settingsAPI.getChatSettings(chatId)
val lastUpdate = repo.lastUpdate(chatId) val lastUpdate = repo.lastUpdate(chatId)
return when { 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 settings = settingsAPI.getChatSettings(chatId)
val lastUpdate = repo.lastUpdate(chatId) val lastUpdate = repo.lastUpdate(chatId)
return when { return when {

View File

@ -1,6 +1,6 @@
package dev.inmo.tgbotapi.libraries.cache.admins 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.UserId
import dev.inmo.tgbotapi.types.message.abstracts.* 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 AdminsCacheAPI.verifyMessageFromAdmin(message: Message) = isAdmin(message)
suspend inline fun <R : Any> AdminsCacheAPI.doIfAdmin( suspend inline fun <R : Any> AdminsCacheAPI.doIfAdmin(
chatId: ChatId, chatId: IdChatIdentifier,
userId: UserId, userId: UserId,
block: () -> R block: () -> R
) = if(isAdmin(chatId, userId)) { ) = if(isAdmin(chatId, userId)) {

View File

@ -3,12 +3,12 @@ package dev.inmo.tgbotapi.libraries.cache.admins
import dev.inmo.tgbotapi.bot.TelegramBot 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.ChatId import dev.inmo.tgbotapi.types.IdChatIdentifier
import dev.inmo.tgbotapi.types.chat.ExtendedBot import dev.inmo.tgbotapi.types.chat.ExtendedBot
import dev.inmo.tgbotapi.types.chat.member.AdministratorChatMember import dev.inmo.tgbotapi.types.chat.member.AdministratorChatMember
internal suspend fun TelegramBot.updateAdmins( internal suspend fun TelegramBot.updateAdmins(
chatId: ChatId, chatId: IdChatIdentifier,
repo: DefaultAdminsCacheAPIRepo, repo: DefaultAdminsCacheAPIRepo,
botInfo: ExtendedBot? = null botInfo: ExtendedBot? = null
): List<AdministratorChatMember> { ): List<AdministratorChatMember> {

View File

@ -15,22 +15,22 @@ private sealed class RepoActions<T> {
abstract val deferred: CompletableDeferred<T> abstract val deferred: CompletableDeferred<T>
} }
private class GetUpdateDateTimeRepoAction( private class GetUpdateDateTimeRepoAction(
val chatId: ChatId, val chatId: IdChatIdentifier,
override val deferred: CompletableDeferred<DateTime?> override val deferred: CompletableDeferred<DateTime?>
) : RepoActions<DateTime?>() ) : RepoActions<DateTime?>()
private class GetChatAdminsRepoAction( private class GetChatAdminsRepoAction(
val chatId: ChatId, val chatId: IdChatIdentifier,
override val deferred: CompletableDeferred<List<AdministratorChatMember>?> override val deferred: CompletableDeferred<List<AdministratorChatMember>?>
) : RepoActions<List<AdministratorChatMember>?>() ) : RepoActions<List<AdministratorChatMember>?>()
private class SetChatAdminsRepoAction( private class SetChatAdminsRepoAction(
val chatId: ChatId, val chatId: IdChatIdentifier,
val newValue: List<AdministratorChatMember>, val newValue: List<AdministratorChatMember>,
override val deferred: CompletableDeferred<Unit> override val deferred: CompletableDeferred<Unit>
) : RepoActions<Unit>() ) : RepoActions<Unit>()
class DefaultAdminsCacheAPIRepoImpl( class DefaultAdminsCacheAPIRepoImpl(
private val adminsRepo: KeyValuesRepo<ChatId, AdministratorChatMember>, private val adminsRepo: KeyValuesRepo<IdChatIdentifier, AdministratorChatMember>,
private val updatesRepo: KeyValueRepo<ChatId, MilliSeconds>, private val updatesRepo: KeyValueRepo<IdChatIdentifier, MilliSeconds>,
private val scope: CoroutineScope private val scope: CoroutineScope
) : DefaultAdminsCacheAPIRepo { ) : DefaultAdminsCacheAPIRepo {
private val actor = scope.actorAsync<RepoActions<*>>(Channel.UNLIMITED) { 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>?>() val deferred = CompletableDeferred<List<AdministratorChatMember>?>()
actor.trySend( actor.trySend(
GetChatAdminsRepoAction(chatId, deferred) GetChatAdminsRepoAction(chatId, deferred)
@ -64,7 +64,7 @@ class DefaultAdminsCacheAPIRepoImpl(
return deferred.await() 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>() val deferred = CompletableDeferred<Unit>()
actor.trySend( actor.trySend(
SetChatAdminsRepoAction(chatId, chatMembers, deferred) SetChatAdminsRepoAction(chatId, chatMembers, deferred)
@ -73,7 +73,7 @@ class DefaultAdminsCacheAPIRepoImpl(
} }
return deferred.await() return deferred.await()
} }
override suspend fun lastUpdate(chatId: ChatId): DateTime? { override suspend fun lastUpdate(chatId: IdChatIdentifier): DateTime? {
val deferred = CompletableDeferred<DateTime?>() val deferred = CompletableDeferred<DateTime?>()
actor.trySend( actor.trySend(
GetUpdateDateTimeRepoAction(chatId, deferred) GetUpdateDateTimeRepoAction(chatId, deferred)
@ -85,7 +85,7 @@ class DefaultAdminsCacheAPIRepoImpl(
} }
fun DefaultAdminsCacheAPIRepo( fun DefaultAdminsCacheAPIRepo(
adminsRepo: KeyValuesRepo<ChatId, AdministratorChatMember>, adminsRepo: KeyValuesRepo<IdChatIdentifier, AdministratorChatMember>,
updatesRepo: KeyValueRepo<ChatId, MilliSeconds>, updatesRepo: KeyValueRepo<IdChatIdentifier, MilliSeconds>,
scope: CoroutineScope scope: CoroutineScope
) = DefaultAdminsCacheAPIRepoImpl(adminsRepo, updatesRepo, scope) ) = DefaultAdminsCacheAPIRepoImpl(adminsRepo, updatesRepo, scope)

View File

@ -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.coroutines.subscribeSafelyWithoutExceptions
import dev.inmo.micro_utils.repos.* import dev.inmo.micro_utils.repos.*
import dev.inmo.tgbotapi.libraries.cache.admins.* 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.CoroutineScope
import kotlinx.coroutines.flow.* import kotlinx.coroutines.flow.*
class DynamicAdminsCacheSettingsAPI( class DynamicAdminsCacheSettingsAPI(
private val repo: KeyValueRepo<ChatId, AdminsCacheSettings>, private val repo: KeyValueRepo<IdChatIdentifier, AdminsCacheSettings>,
private val scope: CoroutineScope private val scope: CoroutineScope
) : AdminsCacheSettingsAPI, MutableAdminsCacheSettingsAPI { ) : AdminsCacheSettingsAPI, MutableAdminsCacheSettingsAPI {
override val chatSettingsUpdatedFlow: SharedFlow<Pair<ChatId, AdminsCacheSettings>> override val chatSettingsUpdatedFlow: SharedFlow<Pair<IdChatIdentifier, AdminsCacheSettings>>
get() = repo.onNewValue.shareIn(scope, SharingStarted.Eagerly) 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) repo.set(chatId, settings)
} }
override suspend fun getChatSettings(chatId: ChatId): AdminsCacheSettings { override suspend fun getChatSettings(chatId: IdChatIdentifier): AdminsCacheSettings {
val settings = repo.get(chatId) val settings = repo.get(chatId)
return if (settings == null) { return if (settings == null) {
val newSettings = AdminsCacheSettings() val newSettings = AdminsCacheSettings()
@ -28,4 +28,4 @@ class DynamicAdminsCacheSettingsAPI(
settings settings
} }
} }
} }

View File

@ -38,7 +38,7 @@ fun TelegramBot.createAdminsCacheAPI(
{ long("chatId") }, { long("chatId") },
{ text("member") }, { text("member") },
"AdminsTable" "AdminsTable"
).withMapper<ChatId, AdministratorChatMember, Identifier, String>( ).withMapper<IdChatIdentifier, AdministratorChatMember, Identifier, String>(
keyFromToTo = { chatId }, keyFromToTo = { chatId },
valueFromToTo = { telegramAdminsSerializationFormat.encodeToString(AdministratorChatMember.serializer(), this) }, valueFromToTo = { telegramAdminsSerializationFormat.encodeToString(AdministratorChatMember.serializer(), this) },
keyToToFrom = { toChatId() }, keyToToFrom = { toChatId() },
@ -49,7 +49,7 @@ fun TelegramBot.createAdminsCacheAPI(
{ long("chatId") }, { long("chatId") },
{ long("datetime") }, { long("datetime") },
"AdminsUpdatesTimesTable" "AdminsUpdatesTimesTable"
).withMapper<ChatId, Long, Identifier, Long>( ).withMapper<IdChatIdentifier, Long, Identifier, Long>(
keyFromToTo = { chatId }, keyFromToTo = { chatId },
valueFromToTo = { this }, valueFromToTo = { this },
keyToToFrom = { toChatId() }, keyToToFrom = { toChatId() },
@ -63,7 +63,7 @@ fun TelegramBot.createAdminsCacheAPI(
{ long("chatId") }, { long("chatId") },
{ text("settings") }, { text("settings") },
"DynamicAdminsCacheSettingsAPI" "DynamicAdminsCacheSettingsAPI"
).withMapper<ChatId, AdminsCacheSettings, Identifier, String>( ).withMapper<IdChatIdentifier, AdminsCacheSettings, Identifier, String>(
keyFromToTo = { chatId }, keyFromToTo = { chatId },
valueFromToTo = { telegramAdminsSerializationFormat.encodeToString(AdminsCacheSettings.serializer() , this) }, valueFromToTo = { telegramAdminsSerializationFormat.encodeToString(AdminsCacheSettings.serializer() , this) },
keyToToFrom = { toChatId() }, keyToToFrom = { toChatId() },

View File

@ -55,7 +55,7 @@ class AdminsPlugin : Plugin {
{ long("chatId") }, { long("chatId") },
{ text("member") }, { text("member") },
"AdminsTable" "AdminsTable"
).withMapper<ChatId, AdministratorChatMember, Identifier, String>( ).withMapper<IdChatIdentifier, AdministratorChatMember, Identifier, String>(
keyFromToTo = { chatId }, keyFromToTo = { chatId },
valueFromToTo = { telegramAdminsSerializationFormat.encodeToString(this) }, valueFromToTo = { telegramAdminsSerializationFormat.encodeToString(this) },
keyToToFrom = { toChatId() }, keyToToFrom = { toChatId() },
@ -66,7 +66,7 @@ class AdminsPlugin : Plugin {
{ long("chatId") }, { long("chatId") },
{ long("datetime") }, { long("datetime") },
"AdminsUpdatesTimesTable" "AdminsUpdatesTimesTable"
).withMapper<ChatId, Long, Identifier, Long>( ).withMapper<IdChatIdentifier, Long, Identifier, Long>(
keyFromToTo = { chatId }, keyFromToTo = { chatId },
valueFromToTo = { this }, valueFromToTo = { this },
keyToToFrom = { toChatId() }, keyToToFrom = { toChatId() },
@ -82,7 +82,7 @@ class AdminsPlugin : Plugin {
{ long("chatId") }, { long("chatId") },
{ text("settings") }, { text("settings") },
"DynamicAdminsCacheSettingsAPI" "DynamicAdminsCacheSettingsAPI"
).withMapper<ChatId, AdminsCacheSettings, Identifier, String>( ).withMapper<IdChatIdentifier, AdminsCacheSettings, Identifier, String>(
keyFromToTo = { chatId }, keyFromToTo = { chatId },
valueFromToTo = { telegramAdminsSerializationFormat.encodeToString(this) }, valueFromToTo = { telegramAdminsSerializationFormat.encodeToString(this) },
keyToToFrom = { toChatId() }, keyToToFrom = { toChatId() },

View File

@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot
import dev.inmo.tgbotapi.requests.DownloadFileStream import dev.inmo.tgbotapi.requests.DownloadFileStream
import dev.inmo.tgbotapi.requests.get.GetFile import dev.inmo.tgbotapi.requests.get.GetFile
import dev.inmo.tgbotapi.requests.send.media.* 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.media.*
import dev.inmo.tgbotapi.types.message.content.MediaContent import dev.inmo.tgbotapi.types.message.content.MediaContent
import dev.inmo.tgbotapi.types.message.content.MessageContent import dev.inmo.tgbotapi.types.message.content.MessageContent
@ -13,7 +13,7 @@ import io.ktor.utils.io.core.Input
class DefaultMessageContentCache<K>( class DefaultMessageContentCache<K>(
private val bot: TelegramBot, private val bot: TelegramBot,
private val filesRefreshingChatId: ChatId, private val filesRefreshingChatId: IdChatIdentifier,
private val simpleMessageContentCache: MessagesSimpleCache<K>, private val simpleMessageContentCache: MessagesSimpleCache<K>,
private val mediaFileActualityChecker: MediaFileActualityChecker = MediaFileActualityChecker.WithDelay( private val mediaFileActualityChecker: MediaFileActualityChecker = MediaFileActualityChecker.WithDelay(
MediaFileActualityChecker.Default(filesRefreshingChatId) MediaFileActualityChecker.Default(filesRefreshingChatId)
@ -111,7 +111,7 @@ class DefaultMessageContentCache<K>(
companion object { companion object {
operator fun invoke( operator fun invoke(
bot: TelegramBot, bot: TelegramBot,
filesRefreshingChatId: ChatId, filesRefreshingChatId: IdChatIdentifier,
simpleMessageContentCache: MessagesSimpleCache<String> = InMemoryMessagesSimpleCache(), simpleMessageContentCache: MessagesSimpleCache<String> = InMemoryMessagesSimpleCache(),
mediaFileActualityChecker: MediaFileActualityChecker = MediaFileActualityChecker.WithDelay( mediaFileActualityChecker: MediaFileActualityChecker = MediaFileActualityChecker.WithDelay(
MediaFileActualityChecker.Default(filesRefreshingChatId) MediaFileActualityChecker.Default(filesRefreshingChatId)

View File

@ -6,6 +6,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot
import dev.inmo.tgbotapi.requests.DeleteMessage import dev.inmo.tgbotapi.requests.DeleteMessage
import dev.inmo.tgbotapi.requests.abstracts.FileId import dev.inmo.tgbotapi.requests.abstracts.FileId
import dev.inmo.tgbotapi.types.ChatId import dev.inmo.tgbotapi.types.ChatId
import dev.inmo.tgbotapi.types.IdChatIdentifier
import dev.inmo.tgbotapi.types.MilliSeconds import dev.inmo.tgbotapi.types.MilliSeconds
import dev.inmo.tgbotapi.types.message.content.MediaContent import dev.inmo.tgbotapi.types.message.content.MediaContent
@ -14,7 +15,7 @@ fun interface MediaFileActualityChecker {
suspend fun TelegramBot.saved(mediaContent: MediaContent) {} suspend fun TelegramBot.saved(mediaContent: MediaContent) {}
class Default( class Default(
private val checkingChatId: ChatId private val checkingChatId: IdChatIdentifier
) : MediaFileActualityChecker { ) : MediaFileActualityChecker {
override suspend fun TelegramBot.isActual(mediaContent: MediaContent): Boolean { override suspend fun TelegramBot.isActual(mediaContent: MediaContent): Boolean {
return runCatching { return runCatching {