From d2d913fca8db730fbcc649a0b7e043eade8e789a Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Wed, 14 Aug 2024 23:33:43 +0600 Subject: [PATCH 1/2] update telegram bots api --- ReactionsInfoBot/src/main/kotlin/ReactionsInfoBot.kt | 1 + gradle.properties | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ReactionsInfoBot/src/main/kotlin/ReactionsInfoBot.kt b/ReactionsInfoBot/src/main/kotlin/ReactionsInfoBot.kt index 46ad255..0c9e866 100644 --- a/ReactionsInfoBot/src/main/kotlin/ReactionsInfoBot.kt +++ b/ReactionsInfoBot/src/main/kotlin/ReactionsInfoBot.kt @@ -48,6 +48,7 @@ suspend fun main(vararg args: String) { when (it) { is Reaction.CustomEmoji -> regular("• ") + customEmoji(it.customEmojiId) + regular("(customEmojiId: ${it.customEmojiId})") is Reaction.Emoji -> regular("• ${it.emoji}") + is Reaction.Paid -> regular("• Some paid reaction") is Reaction.Unknown -> regular("• Unknown emoji ($it)") } regular("\n") diff --git a/gradle.properties b/gradle.properties index 594bb08..3f64379 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ kotlin.daemon.jvmargs=-Xmx3g -Xms500m kotlin_version=2.0.10 -telegram_bot_api_version=16.0.0 +telegram_bot_api_version=17.0.0 micro_utils_version=0.22.0 serialization_version=1.7.1 ktor_version=2.3.11 From acdbd4d2ea20210c5f207c7b1a96232fb49799bb Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 15 Aug 2024 01:51:10 +0600 Subject: [PATCH 2/2] update HelloBot --- .../src/main/kotlin/FilesLoaderBot.kt | 28 ++++++++++++----- HelloBot/src/main/kotlin/HelloBot.kt | 30 ++++++++++++++----- 2 files changed, 44 insertions(+), 14 deletions(-) diff --git a/FilesLoaderBot/src/main/kotlin/FilesLoaderBot.kt b/FilesLoaderBot/src/main/kotlin/FilesLoaderBot.kt index 8744ada..f9df093 100644 --- a/FilesLoaderBot/src/main/kotlin/FilesLoaderBot.kt +++ b/FilesLoaderBot/src/main/kotlin/FilesLoaderBot.kt @@ -7,7 +7,7 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.telegramBotWithBehaviourAn import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onCommand import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onMedia import dev.inmo.tgbotapi.requests.abstracts.asMultipartFile -import dev.inmo.tgbotapi.types.actions.TypingAction +import dev.inmo.tgbotapi.types.actions.* import dev.inmo.tgbotapi.types.media.TelegramMediaAudio import dev.inmo.tgbotapi.types.media.TelegramMediaDocument import dev.inmo.tgbotapi.types.media.TelegramMediaPhoto @@ -34,13 +34,27 @@ suspend fun main(args: Array) { val content = it.content val pathedFile = bot.getFileAdditionalInfo(content.media) val outFile = File(directoryOrFile, pathedFile.filePath.filenameFromUrl) - runCatching { - bot.downloadFile(content.media, outFile) - }.onFailure { - it.printStackTrace() + withTypingAction(it.chat.id) { + runCatching { + bot.downloadFile(content.media, outFile) + }.onFailure { + it.printStackTrace() + }.onSuccess { _ -> + reply(it, "Saved to ${outFile.absolutePath}") + } }.onSuccess { _ -> - reply(it, "Saved to ${outFile.absolutePath}") - withAction(it.chat.id, TypingAction) { + val action = when (content) { + is PhotoContent -> UploadPhotoAction + is AnimationContent, + is VideoContent -> UploadVideoAction + is StickerContent -> ChooseStickerAction + is MediaGroupContent<*> -> UploadPhotoAction + is DocumentContent -> UploadDocumentAction + is VoiceContent, + is AudioContent -> RecordVoiceAction + is VideoNoteContent -> UploadVideoNoteAction + } + withAction(it.chat.id, action) { when (content) { is PhotoContent -> replyWithPhoto( it, diff --git a/HelloBot/src/main/kotlin/HelloBot.kt b/HelloBot/src/main/kotlin/HelloBot.kt index 48ccd69..9e0f995 100644 --- a/HelloBot/src/main/kotlin/HelloBot.kt +++ b/HelloBot/src/main/kotlin/HelloBot.kt @@ -3,7 +3,10 @@ import dev.inmo.tgbotapi.extensions.api.bot.getMe import dev.inmo.tgbotapi.extensions.api.chat.get.getChat import dev.inmo.tgbotapi.extensions.api.send.reply import dev.inmo.tgbotapi.extensions.behaviour_builder.telegramBotWithBehaviourAndLongPolling +import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onContentMessage import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onMentionWithAnyContent +import dev.inmo.tgbotapi.extensions.utils.extensions.raw.sender_chat +import dev.inmo.tgbotapi.extensions.utils.extensions.raw.text import dev.inmo.tgbotapi.extensions.utils.formatting.linkMarkdownV2 import dev.inmo.tgbotapi.extensions.utils.formatting.textMentionMarkdownV2 import dev.inmo.tgbotapi.extensions.utils.ifFromChannelGroupContentMessage @@ -23,22 +26,35 @@ suspend fun main(vararg args: String) { telegramBotWithBehaviourAndLongPolling(botToken, CoroutineScope(Dispatchers.IO)) { val me = getMe() - onMentionWithAnyContent(me) { message -> + onContentMessage( + initialFilter = initialFilter@{ it.text ?.contains(me.username ?.full ?: return@initialFilter false) == true } + ) { message -> val answerText = when (val chat = message.chat) { is PreviewChannelChat -> { - val answer = "Hi everybody in this channel \"${chat.title}\"" - reply(message, answer, MarkdownV2) - return@onMentionWithAnyContent + val sender = message.sender_chat + val answer = "Hi everybody in this channel \"${chat.title}\"" + if (sender != null) { + " and you, " + when (sender) { + is BusinessChat -> "business chat (wat) ${sender.original}" + is PrivateChat -> "${sender.lastName} ${sender.firstName}" + is GroupChat -> "group ${sender.title}" + is ChannelChat -> "channel ${sender.title}" + is UnknownChatType -> "wat chat (${sender})" + } + } else { + "" + } + reply(message, answer.escapeMarkdownV2Common(), MarkdownV2) + return@onContentMessage } is PreviewPrivateChat -> { reply(message, "Hi, " + "${chat.firstName} ${chat.lastName}".textMentionMarkdownV2(chat.id), MarkdownV2) - return@onMentionWithAnyContent + return@onContentMessage } is PreviewGroupChat -> { message.ifFromChannelGroupContentMessage { val answer = "Hi, ${it.senderChat.title}" reply(message, answer, MarkdownV2) - return@onMentionWithAnyContent + return@onContentMessage } "Oh, hi, " + when (chat) { is SupergroupChat -> (chat.username ?.username ?: getChat(chat).inviteLink) ?.let { @@ -51,7 +67,7 @@ suspend fun main(vararg args: String) { } is PreviewBusinessChat -> { reply(message, "Hi, " + "${chat.original.firstName} ${chat.original.lastName} (as business chat :) )".textMentionMarkdownV2(chat.original.id), MarkdownV2) - return@onMentionWithAnyContent + return@onContentMessage } is UnknownChatType -> "Unknown :(".escapeMarkdownV2Common() }