mirror of
https://github.com/InsanusMokrassar/TelegramBotApiLibraries.git
synced 2024-12-22 16:47:16 +00:00
commit
87bd39544d
@ -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
|
||||||
|
@ -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]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -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,
|
||||||
{
|
{
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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 {
|
||||||
|
@ -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)) {
|
||||||
|
@ -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> {
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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() },
|
||||||
|
@ -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() },
|
||||||
|
@ -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)
|
||||||
|
@ -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 {
|
||||||
|
@ -8,15 +8,15 @@ android.useAndroidX=true
|
|||||||
android.enableJetifier=true
|
android.enableJetifier=true
|
||||||
|
|
||||||
|
|
||||||
kotlin_version=1.7.20
|
kotlin_version=1.7.21
|
||||||
kotlin_serialisation_core_version=1.4.1
|
kotlin_serialisation_core_version=1.4.1
|
||||||
|
|
||||||
github_release_plugin_version=2.4.1
|
github_release_plugin_version=2.4.1
|
||||||
|
|
||||||
tgbotapi_version=4.0.0
|
tgbotapi_version=4.1.0
|
||||||
micro_utils_version=0.14.0
|
micro_utils_version=0.14.1
|
||||||
exposed_version=0.40.1
|
exposed_version=0.40.1
|
||||||
plagubot_version=3.0.0
|
plagubot_version=3.1.0
|
||||||
|
|
||||||
# Dokka
|
# Dokka
|
||||||
|
|
||||||
@ -25,4 +25,4 @@ dokka_version=1.7.20
|
|||||||
# Project data
|
# Project data
|
||||||
|
|
||||||
group=dev.inmo
|
group=dev.inmo
|
||||||
version=0.6.0
|
version=0.6.1
|
||||||
|
Loading…
Reference in New Issue
Block a user