From 8ef50537aeabcd5617af4088e79b23f92198dd1c Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sat, 11 Mar 2023 15:55:09 +0600 Subject: [PATCH] some functionality of sticker set handler bot --- .../src/main/kotlin/StickerSetHandlerBot.kt | 47 ++++++++++++++++++- settings.gradle | 2 + 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/StickerSetHandler/src/main/kotlin/StickerSetHandlerBot.kt b/StickerSetHandler/src/main/kotlin/StickerSetHandlerBot.kt index 7507cd5..1ed11d4 100644 --- a/StickerSetHandler/src/main/kotlin/StickerSetHandlerBot.kt +++ b/StickerSetHandler/src/main/kotlin/StickerSetHandlerBot.kt @@ -1,3 +1,48 @@ +import dev.inmo.micro_utils.coroutines.runCatchingSafely +import dev.inmo.tgbotapi.extensions.api.bot.getMe +import dev.inmo.tgbotapi.extensions.api.files.downloadFile +import dev.inmo.tgbotapi.extensions.api.files.downloadFileToTemp +import dev.inmo.tgbotapi.extensions.api.get.getStickerSet +import dev.inmo.tgbotapi.extensions.api.stickers.createNewStickerSet +import dev.inmo.tgbotapi.extensions.behaviour_builder.telegramBotWithBehaviourAndLongPolling +import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onSticker +import dev.inmo.tgbotapi.extensions.utils.extensions.raw.sticker +import dev.inmo.tgbotapi.requests.abstracts.asMultipartFile +import dev.inmo.tgbotapi.requests.stickers.InputSticker +import dev.inmo.tgbotapi.types.files.* +import dev.inmo.tgbotapi.types.toChatId +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers + suspend fun main(args: Array) { - build + telegramBotWithBehaviourAndLongPolling(args.first(), scope = CoroutineScope(Dispatchers.IO)) { + val me = getMe() + onSticker { + val stickerSetName = "${it.chat.id}_by_${me.username.username}" + val sticker = it.content.media + runCatchingSafely { + getStickerSet(stickerSetName) + }.getOrElse { _ -> + createNewStickerSet( + it.chat.id.toChatId(), + stickerSetName, + "Sticker set by ${me.firstName}", + it.content.media.stickerFormat, + listOf( + when (sticker) { + is CustomEmojiSticker -> InputSticker.WithKeywords.CustomEmoji( + downloadFileToTemp(sticker.fileId).asMultipartFile(), + sticker.emoji ?.let(::listOf) ?: emptyList(), + emptyList() + ) + is MaskSticker -> TODO() + is RegularSticker -> TODO() + is UnknownSticker -> TODO() + } + ), + sticker + ) + } + } + } } \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index d7e3bf9..dde1eba 100644 --- a/settings.gradle +++ b/settings.gradle @@ -34,3 +34,5 @@ include ":UserChatShared" include ":RightsChangerBot" include ":LiveLocationsBot" + +include ":StickerSetHandler"