From 034f5fb7ca3399d920ecde6748854a563a9ee018 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Fri, 9 Sep 2022 16:42:59 +0600 Subject: [PATCH] add rating and attach urls options --- src/main/kotlin/App.kt | 8 +++++--- src/main/kotlin/ChatSettings.kt | 7 +++++-- src/main/kotlin/EnableArgsParser.kt | 8 +++++++- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/App.kt b/src/main/kotlin/App.kt index abc0bb0..ad5cc26 100644 --- a/src/main/kotlin/App.kt +++ b/src/main/kotlin/App.kt @@ -101,20 +101,22 @@ suspend fun main(args: Array) { urls.isEmpty() -> return@runCatchingSafely urls.size == 1 -> sendPhoto( chatId, - FileUrl(urls.first()) + FileUrl(urls.first()), + if (settings.attachUrls) urls.first() else null ) settings.gallery -> urls.chunked(mediaCountInMediaGroup.last + 1).forEach { sendVisualMediaGroup( chatId, it.map { - TelegramMediaPhoto(FileUrl(it)) + TelegramMediaPhoto(FileUrl(it), if (settings.attachUrls) it else null) } ) } else -> urls.forEach { sendPhoto( chatId, - FileUrl(it) + FileUrl(it), + if (settings.attachUrls) it else null ) } } diff --git a/src/main/kotlin/ChatSettings.kt b/src/main/kotlin/ChatSettings.kt index 5cd505b..be9747a 100644 --- a/src/main/kotlin/ChatSettings.kt +++ b/src/main/kotlin/ChatSettings.kt @@ -10,6 +10,7 @@ import net.kodehawa.lib.imageboards.DefaultImageBoards import net.kodehawa.lib.imageboards.ImageBoard import net.kodehawa.lib.imageboards.boards.DefaultBoards import net.kodehawa.lib.imageboards.entities.BoardImage +import net.kodehawa.lib.imageboards.entities.Rating @Serializable data class ChatSettings( @@ -18,7 +19,9 @@ data class ChatSettings( @Serializable(BoardSerializer::class) private val boardBase: DefaultBoards, val count: Int = 1, - val gallery: Boolean = false + val gallery: Boolean = false, + val rating: Rating? = null, + val attachUrls: Boolean = false ) { val scheduler by lazy { krontabTemplate ?.toSchedule() @@ -38,7 +41,7 @@ data class ChatSettings( suspend fun makeRequest(page: Int): List { return withContext(Dispatchers.IO) { - board.search(page, count, query).blocking() + board.search(page, count, query, rating).blocking() } } diff --git a/src/main/kotlin/EnableArgsParser.kt b/src/main/kotlin/EnableArgsParser.kt index b2191ce..5b8373e 100644 --- a/src/main/kotlin/EnableArgsParser.kt +++ b/src/main/kotlin/EnableArgsParser.kt @@ -1,12 +1,14 @@ import com.github.ajalt.clikt.core.CliktCommand import com.github.ajalt.clikt.parameters.arguments.* import com.github.ajalt.clikt.parameters.options.* +import com.github.ajalt.clikt.parameters.types.enum import com.github.ajalt.clikt.parameters.types.int import dev.inmo.micro_utils.coroutines.launchSafelyWithoutExceptions import dev.inmo.micro_utils.repos.KeyValueRepo import dev.inmo.micro_utils.repos.set import dev.inmo.tgbotapi.types.ChatId import kotlinx.coroutines.CoroutineScope +import net.kodehawa.lib.imageboards.entities.Rating class EnableArgsParser: CliktCommand(name = "enable") { val count by option("-n").int().help("Amount of pictures to grab each trigger time").default(1).check("Count should be in range 1-10") { @@ -20,6 +22,8 @@ class EnableArgsParser: CliktCommand(name = "enable") { ChatSettings.BoardSerializer.types.getValue(it) }.required().help("Board type. Possible values: ${ChatSettings.BoardSerializer.types.keys.joinToString { it }}") val gallery by option("-g", "--gallery").flag(default = false).help("Effective only when count passed > 1. Will send chosen images as gallery instead of separated images") + val rating by option("-r", "--rating").enum { it.name.lowercase() } + val attachUrls by option("-a", "--attach_urls").flag(default = false) var resultSettings: ChatSettings? = null private set @@ -30,7 +34,9 @@ class EnableArgsParser: CliktCommand(name = "enable") { krontab, board, count, - gallery + gallery, + rating, + attachUrls ) } }