Compare commits

...

13 Commits

3 changed files with 22 additions and 9 deletions

View File

@@ -6,21 +6,21 @@ kotlin.incremental=true
kotlin.incremental.js=true
kotlin_version=1.8.10
kotlin_version=1.8.21
kotlin_serialisation_core_version=1.5.0
github_release_plugin_version=2.4.1
tgbotapi_version=6.0.3
micro_utils_version=0.17.2
tgbotapi_version=7.1.1
micro_utils_version=0.18.0
exposed_version=0.41.1
plagubot_version=4.0.3
plagubot_version=5.1.1
# Dokka
dokka_version=1.7.20
dokka_version=1.8.10
# Project data
group=dev.inmo
version=0.9.3
version=0.11.1

View File

@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

View File

@@ -16,7 +16,8 @@ class MessagesResender(
) {
suspend fun resend(
targetChatId: IdChatIdentifier,
messagesInfo: List<MessageMetaInfo>
messagesInfo: List<MessageMetaInfo>,
onBetweenMessages: suspend (sent: List<MessageMetaInfo>, toBeSent: List<MessageMetaInfo>) -> Unit
): List<Pair<MessageMetaInfo, MessageMetaInfo>> {
val messagesWithOrders = messagesInfo.mapIndexed { i, messageInfo -> messageInfo to i }.toMap()
val ordersWithMessagesGroups = messagesInfo.groupBy { it.group }.flatMap { (group, list) ->
@@ -29,9 +30,14 @@ class MessagesResender(
}
}.sortedBy { it.first }
val sent = mutableListOf<MessageMetaInfo>()
val leftToSend = ordersWithMessagesGroups.map { it.second }.toMutableList()
return ordersWithMessagesGroups.flatMap { (_, contents) ->
val sourceMessagesToSentMessages = mutableListOf<Pair<MessageMetaInfo, MessageMetaInfo>>()
onBetweenMessages(sent.toList(), leftToSend.flatten())
when {
contents.size == 1 -> {
val messageInfo = contents.first()
@@ -137,8 +143,15 @@ class MessagesResender(
}
}
leftToSend.takeIf { it.isNotEmpty() } ?.removeAt(0) ?.also {
sent.addAll(it)
}
sourceMessagesToSentMessages.toList()
}
}
suspend fun resend(
targetChatId: IdChatIdentifier,
messagesInfo: List<MessageMetaInfo>
): List<Pair<MessageMetaInfo, MessageMetaInfo>> = resend(targetChatId, messagesInfo) { _, _ -> }
}