All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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