
com.github.insanusmokrassar.AutoPostTelegramBot.plugins.choosers.MostRatedChooser.kt Maven / Gradle / Ivy
package com.github.insanusmokrassar.AutoPostTelegramBot.plugins.choosers
import com.github.insanusmokrassar.AutoPostTelegramBot.base.models.PostId
import com.github.insanusmokrassar.AutoPostTelegramBot.base.plugins.abstractions.RatingPair
import kotlinx.serialization.Serializable
import org.joda.time.DateTime
@Serializable
class MostRatedChooser : RateChooser() {
override suspend fun triggerChoose(time: DateTime, exceptions: List): Collection {
val mostRated = mutableListOf()
ratingPlugin.getRegisteredPosts().flatMap {
ratingPlugin.getPostRatings(it)
}.forEach {
mostRated.firstOrNull() ?.also { (_, rating) ->
when {
it.second > rating -> {
mostRated.clear()
mostRated.add(it)
}
it.second == rating -> {
mostRated.add(it)
}
}
} ?: mostRated.add(it)
}
return mostRated.minBy { (ratingId, _) -> ratingId } ?.let { (ratingId, _) ->
ratingPlugin.resolvePostId(ratingId) ?.let {
listOf(it)
}
} ?: emptyList()
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy