From 0b9c715e2527a8b41aaab174b7435126264845e4 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 18 Sep 2025 01:05:03 +0600 Subject: [PATCH 1/8] start migration onto 29.0.0 --- .../src/main/kotlin/ResenderBotJvm.kt | 15 +++++++++++++++ gradle.properties | 6 +++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/ResenderBot/jvm_launcher/src/main/kotlin/ResenderBotJvm.kt b/ResenderBot/jvm_launcher/src/main/kotlin/ResenderBotJvm.kt index 0aa1a92..9b9c812 100644 --- a/ResenderBot/jvm_launcher/src/main/kotlin/ResenderBotJvm.kt +++ b/ResenderBot/jvm_launcher/src/main/kotlin/ResenderBotJvm.kt @@ -1,4 +1,19 @@ +import dev.inmo.kslog.common.KSLog +import dev.inmo.kslog.common.LogLevel +import dev.inmo.kslog.common.defaultMessageFormatter +import dev.inmo.kslog.common.setDefaultKSLog + suspend fun main(args: Array) { + val isDebug = args.getOrNull(1) == "debug" + + if (isDebug) { + setDefaultKSLog( + KSLog { level: LogLevel, tag: String?, message: Any, throwable: Throwable? -> + println(defaultMessageFormatter(level, tag, message, throwable)) + } + ) + } + activateResenderBot(args.first()) { println(it) } diff --git a/gradle.properties b/gradle.properties index 8df69e8..9982181 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,9 +5,9 @@ org.gradle.jvmargs=-Xmx3148m kotlin.daemon.jvmargs=-Xmx3g -Xms500m -kotlin_version=2.2.0 -telegram_bot_api_version=28.0.0 -micro_utils_version=0.26.2 +kotlin_version=2.2.10 +telegram_bot_api_version=29.0.0 +micro_utils_version=0.26.3 serialization_version=1.9.0 ktor_version=3.2.3 compose_version=1.8.2 From 81ba5831c37f44d7b77078e2dd7aa9abca63a362 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Mon, 22 Sep 2025 12:44:52 +0600 Subject: [PATCH 2/8] add suggested posts sample --- SuggestedPosts/README.md | 9 ++ SuggestedPosts/build.gradle | 21 +++++ .../src/main/kotlin/SuggestedPostsBot.kt | 85 +++++++++++++++++++ settings.gradle | 2 + 4 files changed, 117 insertions(+) create mode 100644 SuggestedPosts/README.md create mode 100644 SuggestedPosts/build.gradle create mode 100644 SuggestedPosts/src/main/kotlin/SuggestedPostsBot.kt diff --git a/SuggestedPosts/README.md b/SuggestedPosts/README.md new file mode 100644 index 0000000..6849019 --- /dev/null +++ b/SuggestedPosts/README.md @@ -0,0 +1,9 @@ +# StickerSetHandler + +Send sticker to this bot to form your own stickers set. Send /delete to delete this sticker set + +## How to run + +```bash +./gradlew run --args="TOKEN" +``` diff --git a/SuggestedPosts/build.gradle b/SuggestedPosts/build.gradle new file mode 100644 index 0000000..a53fad2 --- /dev/null +++ b/SuggestedPosts/build.gradle @@ -0,0 +1,21 @@ +buildscript { + repositories { + mavenCentral() + } + + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +apply plugin: 'kotlin' +apply plugin: 'application' + +mainClassName="SuggestedPostsBotKt" + + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + + implementation "dev.inmo:tgbotapi:$telegram_bot_api_version" +} diff --git a/SuggestedPosts/src/main/kotlin/SuggestedPostsBot.kt b/SuggestedPosts/src/main/kotlin/SuggestedPostsBot.kt new file mode 100644 index 0000000..ff0920b --- /dev/null +++ b/SuggestedPosts/src/main/kotlin/SuggestedPostsBot.kt @@ -0,0 +1,85 @@ +import dev.inmo.kslog.common.KSLog +import dev.inmo.kslog.common.LogLevel +import dev.inmo.kslog.common.defaultMessageFormatter +import dev.inmo.kslog.common.setDefaultKSLog +import dev.inmo.micro_utils.coroutines.runCatchingLogging +import dev.inmo.micro_utils.coroutines.subscribeLoggingDropExceptions +import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions +import dev.inmo.tgbotapi.extensions.api.bot.getMe +import dev.inmo.tgbotapi.extensions.api.bot.getMyStarBalance +import dev.inmo.tgbotapi.extensions.api.chat.get.getChat +import dev.inmo.tgbotapi.extensions.api.send.reply +import dev.inmo.tgbotapi.extensions.api.send.resend +import dev.inmo.tgbotapi.extensions.api.send.send +import dev.inmo.tgbotapi.extensions.api.suggested.approveSuggestedPost +import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContextData +import dev.inmo.tgbotapi.extensions.behaviour_builder.buildSubcontextInitialAction +import dev.inmo.tgbotapi.extensions.behaviour_builder.telegramBotWithBehaviourAndLongPolling +import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onChannelDirectMessagesConfigurationChanged +import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onCommand +import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onContentMessage +import dev.inmo.tgbotapi.extensions.utils.channelDirectMessagesContentMessageOrNull +import dev.inmo.tgbotapi.extensions.utils.previewChannelDirectMessagesChatOrNull +import dev.inmo.tgbotapi.extensions.utils.suggestedChannelDirectMessagesContentMessageOrNull +import dev.inmo.tgbotapi.types.message.SuggestedPostParameters +import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage +import dev.inmo.tgbotapi.types.update.abstracts.Update +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay + +/** + * This place can be the playground for your code. + */ +suspend fun main(vararg args: String) { + val botToken = args.first() + + val isDebug = args.any { it == "debug" } + val isTestServer = args.any { it == "testServer" } + + if (isDebug) { + setDefaultKSLog( + KSLog { level: LogLevel, tag: String?, message: Any, throwable: Throwable? -> + println(defaultMessageFormatter(level, tag, message, throwable)) + } + ) + } + + telegramBotWithBehaviourAndLongPolling( + botToken, + CoroutineScope(Dispatchers.Default), + testServer = isTestServer, + ) { + // start here!! + val me = getMe() + println(me) + + onCommand("start") { + println(getChat(it.chat)) + } + + onContentMessage { + val message = it.channelDirectMessagesContentMessageOrNull() ?: return@onContentMessage + + resend( + message.chat.id, + message.content, + suggestedPostParameters = SuggestedPostParameters() + ) + } + + onContentMessage { + val suggestedPost = it.suggestedChannelDirectMessagesContentMessageOrNull() ?: return@onContentMessage + + for (i in 0 until 3) { + delay(1000L) + send(suggestedPost.chat, "${3 - i}") + } + approveSuggestedPost(suggestedPost) + } + + allUpdatesFlow.subscribeLoggingDropExceptions(this) { + println(it) + } + }.second.join() +} diff --git a/settings.gradle b/settings.gradle index bfdabe8..c8813ac 100644 --- a/settings.gradle +++ b/settings.gradle @@ -59,3 +59,5 @@ include ":CustomBot" include ":MemberUpdatedWatcherBot" include ":WebHooks" + +include ":SuggestedPosts" From 261df14412879679b3959c8e8f6d4d4df9d146c8 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 23 Sep 2025 12:49:11 +0600 Subject: [PATCH 3/8] improvements in suggested posts bot --- .../src/main/kotlin/SuggestedPostsBot.kt | 57 ++++++++++++++++--- 1 file changed, 50 insertions(+), 7 deletions(-) diff --git a/SuggestedPosts/src/main/kotlin/SuggestedPostsBot.kt b/SuggestedPosts/src/main/kotlin/SuggestedPostsBot.kt index ff0920b..a6e129c 100644 --- a/SuggestedPosts/src/main/kotlin/SuggestedPostsBot.kt +++ b/SuggestedPosts/src/main/kotlin/SuggestedPostsBot.kt @@ -14,19 +14,28 @@ import dev.inmo.tgbotapi.extensions.api.send.send import dev.inmo.tgbotapi.extensions.api.suggested.approveSuggestedPost import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContextData import dev.inmo.tgbotapi.extensions.behaviour_builder.buildSubcontextInitialAction +import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.waitSuggestedPostApproved +import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.waitSuggestedPostDeclined import dev.inmo.tgbotapi.extensions.behaviour_builder.telegramBotWithBehaviourAndLongPolling import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onChannelDirectMessagesConfigurationChanged import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onCommand import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onContentMessage +import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onSuggestedPostApproved +import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onSuggestedPostDeclined +import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onSuggestedPostPaid +import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onSuggestedPostRefunded import dev.inmo.tgbotapi.extensions.utils.channelDirectMessagesContentMessageOrNull import dev.inmo.tgbotapi.extensions.utils.previewChannelDirectMessagesChatOrNull import dev.inmo.tgbotapi.extensions.utils.suggestedChannelDirectMessagesContentMessageOrNull import dev.inmo.tgbotapi.types.message.SuggestedPostParameters import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage import dev.inmo.tgbotapi.types.update.abstracts.Update +import dev.inmo.tgbotapi.utils.firstOf import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.first /** * This place can be the playground for your code. @@ -60,6 +69,8 @@ suspend fun main(vararg args: String) { onContentMessage { val message = it.channelDirectMessagesContentMessageOrNull() ?: return@onContentMessage + val chat = getChat(it.chat) + println(chat) resend( message.chat.id, @@ -68,14 +79,46 @@ suspend fun main(vararg args: String) { ) } - onContentMessage { - val suggestedPost = it.suggestedChannelDirectMessagesContentMessageOrNull() ?: return@onContentMessage + onContentMessage { message -> + val suggestedPost = message.suggestedChannelDirectMessagesContentMessageOrNull() ?: return@onContentMessage + val chat = getChat(message.chat) - for (i in 0 until 3) { - delay(1000L) - send(suggestedPost.chat, "${3 - i}") - } - approveSuggestedPost(suggestedPost) + firstOf( + { + waitSuggestedPostApproved().filter { + it.suggestedPostMessage ?.chat ?.id == message.chat.id + }.first() + }, + { + waitSuggestedPostDeclined().filter { + it.suggestedPostMessage ?.chat ?.id == message.chat.id + }.first() + }, + { + for (i in 0 until 3) { + delay(1000L) + send(suggestedPost.chat, "${3 - i}") + } + approveSuggestedPost(suggestedPost) + }, + ) + } + + onSuggestedPostPaid { + println(it) + reply(it, "Paid") + } + onSuggestedPostApproved { + println(it) + reply(it, "Approved") + } + onSuggestedPostDeclined { + println(it) + reply(it, "Declined") + } + onSuggestedPostRefunded { + println(it) + reply(it, "Refunded") } allUpdatesFlow.subscribeLoggingDropExceptions(this) { From 7d5cb58a3f999e6c30c05c6bfce0af5682cc04a2 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 23 Sep 2025 12:52:31 +0600 Subject: [PATCH 4/8] small improvement with suggested post approvement failes --- SuggestedPosts/src/main/kotlin/SuggestedPostsBot.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/SuggestedPosts/src/main/kotlin/SuggestedPostsBot.kt b/SuggestedPosts/src/main/kotlin/SuggestedPostsBot.kt index a6e129c..ae1575c 100644 --- a/SuggestedPosts/src/main/kotlin/SuggestedPostsBot.kt +++ b/SuggestedPosts/src/main/kotlin/SuggestedPostsBot.kt @@ -20,6 +20,7 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.telegramBotWithBehaviourAn import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onChannelDirectMessagesConfigurationChanged import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onCommand import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onContentMessage +import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onSuggestedPostApprovalFailed import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onSuggestedPostApproved import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onSuggestedPostDeclined import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onSuggestedPostPaid @@ -120,6 +121,10 @@ suspend fun main(vararg args: String) { println(it) reply(it, "Refunded") } + onSuggestedPostApprovalFailed { + println(it) + reply(it, "Approval failed") + } allUpdatesFlow.subscribeLoggingDropExceptions(this) { println(it) From 0d1bcf05fdb1a06655a4d01de3ce882970503198 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 23 Sep 2025 13:38:54 +0600 Subject: [PATCH 5/8] improve SuggestedPostsBot --- SuggestedPosts/src/main/kotlin/SuggestedPostsBot.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/SuggestedPosts/src/main/kotlin/SuggestedPostsBot.kt b/SuggestedPosts/src/main/kotlin/SuggestedPostsBot.kt index ae1575c..197eafb 100644 --- a/SuggestedPosts/src/main/kotlin/SuggestedPostsBot.kt +++ b/SuggestedPosts/src/main/kotlin/SuggestedPostsBot.kt @@ -80,7 +80,9 @@ suspend fun main(vararg args: String) { ) } - onContentMessage { message -> + onContentMessage( + subcontextUpdatesFilter = { _, _ -> true } // important to not miss updates in channel for waitSuggestedPost events + ) { message -> val suggestedPost = message.suggestedChannelDirectMessagesContentMessageOrNull() ?: return@onContentMessage val chat = getChat(message.chat) From 990614e25755b6d29d5c2d02e2c7acf340097c56 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 23 Sep 2025 15:43:58 +0600 Subject: [PATCH 6/8] add checklists tasks --- ChecklistsBot/build.gradle | 21 +++ .../src/main/kotlin/ChecklistsBot.kt | 120 ++++++++++++++++++ StarTransactionsBot/README.md | 2 +- gradle.properties | 2 +- settings.gradle | 2 + 5 files changed, 145 insertions(+), 2 deletions(-) create mode 100644 ChecklistsBot/build.gradle create mode 100644 ChecklistsBot/src/main/kotlin/ChecklistsBot.kt diff --git a/ChecklistsBot/build.gradle b/ChecklistsBot/build.gradle new file mode 100644 index 0000000..a5fc55b --- /dev/null +++ b/ChecklistsBot/build.gradle @@ -0,0 +1,21 @@ +buildscript { + repositories { + mavenCentral() + } + + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +apply plugin: 'kotlin' +apply plugin: 'application' + +mainClassName="ChecklistsBotKt" + + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + + implementation "dev.inmo:tgbotapi:$telegram_bot_api_version" +} diff --git a/ChecklistsBot/src/main/kotlin/ChecklistsBot.kt b/ChecklistsBot/src/main/kotlin/ChecklistsBot.kt new file mode 100644 index 0000000..bc69334 --- /dev/null +++ b/ChecklistsBot/src/main/kotlin/ChecklistsBot.kt @@ -0,0 +1,120 @@ +import dev.inmo.kslog.common.KSLog +import dev.inmo.kslog.common.LogLevel +import dev.inmo.kslog.common.defaultMessageFormatter +import dev.inmo.kslog.common.setDefaultKSLog +import dev.inmo.micro_utils.coroutines.runCatchingLogging +import dev.inmo.micro_utils.coroutines.subscribeLoggingDropExceptions +import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions +import dev.inmo.tgbotapi.extensions.api.bot.getMe +import dev.inmo.tgbotapi.extensions.api.bot.getMyStarBalance +import dev.inmo.tgbotapi.extensions.api.chat.get.getChat +import dev.inmo.tgbotapi.extensions.api.send.reply +import dev.inmo.tgbotapi.extensions.api.send.resend +import dev.inmo.tgbotapi.extensions.api.send.send +import dev.inmo.tgbotapi.extensions.api.suggested.approveSuggestedPost +import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContextData +import dev.inmo.tgbotapi.extensions.behaviour_builder.buildSubcontextInitialAction +import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.waitSuggestedPostApproved +import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.waitSuggestedPostDeclined +import dev.inmo.tgbotapi.extensions.behaviour_builder.telegramBotWithBehaviourAndLongPolling +import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onChannelDirectMessagesConfigurationChanged +import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onChecklistContent +import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onChecklistTasksAdded +import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onChecklistTasksDone +import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onCommand +import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onContentMessage +import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onSuggestedPostApprovalFailed +import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onSuggestedPostApproved +import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onSuggestedPostDeclined +import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onSuggestedPostPaid +import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onSuggestedPostRefunded +import dev.inmo.tgbotapi.extensions.utils.channelDirectMessagesContentMessageOrNull +import dev.inmo.tgbotapi.extensions.utils.previewChannelDirectMessagesChatOrNull +import dev.inmo.tgbotapi.extensions.utils.suggestedChannelDirectMessagesContentMessageOrNull +import dev.inmo.tgbotapi.types.checklists.ChecklistTaskId +import dev.inmo.tgbotapi.types.message.SuggestedPostParameters +import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage +import dev.inmo.tgbotapi.types.message.content.ChecklistContent +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.update.abstracts.Update +import dev.inmo.tgbotapi.utils.bold +import dev.inmo.tgbotapi.utils.buildEntities +import dev.inmo.tgbotapi.utils.code +import dev.inmo.tgbotapi.utils.firstOf +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.first + +suspend fun main(vararg args: String) { + val botToken = args.first() + + val isDebug = args.any { it == "debug" } + val isTestServer = args.any { it == "testServer" } + + if (isDebug) { + setDefaultKSLog( + KSLog { level: LogLevel, tag: String?, message: Any, throwable: Throwable? -> + println(defaultMessageFormatter(level, tag, message, throwable)) + } + ) + } + + telegramBotWithBehaviourAndLongPolling( + botToken, + CoroutineScope(Dispatchers.Default), + testServer = isTestServer, + ) { + // start here!! + val me = getMe() + println(me) + + fun ChecklistContent.textBuilderTextSources(): TextSourcesList { + return buildEntities { + +checklist.textSources + "\n\n" + checklist.tasks.forEach { task -> + +"• " + code( + if (task.completionDate != null) { + "[x] " + } else { + "[ ] " + } + ) + + bold(task.textSources) + "\n" + } + } + } + + onChecklistContent { messageWithContent -> + reply(messageWithContent) { + +messageWithContent.content.textBuilderTextSources() + } + } + + onChecklistTasksDone { eventMessage -> + reply( + eventMessage, + checklistTaskId = eventMessage.chatEvent.markedAsDone ?.firstOrNull() + ) { + eventMessage.chatEvent.checklistMessage.content.checklist + +eventMessage.chatEvent.checklistMessage.content.textBuilderTextSources() + } + } + + onChecklistTasksAdded { messageWithContent -> + reply( + messageWithContent.chatEvent.checklistMessage, + checklistTaskId = messageWithContent.chatEvent.tasks.firstOrNull() ?.id + ) { + +messageWithContent.chatEvent.checklistMessage.content.textBuilderTextSources() + } + } + + allUpdatesFlow.subscribeLoggingDropExceptions(this) { + println(it) + } + }.second.join() +} diff --git a/StarTransactionsBot/README.md b/StarTransactionsBot/README.md index 13b72ef..8790a9d 100644 --- a/StarTransactionsBot/README.md +++ b/StarTransactionsBot/README.md @@ -1,4 +1,4 @@ -# CustomBot +# StarTransactionsBot This bot basically have no any useful behaviour, but you may customize it as a playground diff --git a/gradle.properties b/gradle.properties index 9982181..f78ada0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ kotlin.daemon.jvmargs=-Xmx3g -Xms500m kotlin_version=2.2.10 -telegram_bot_api_version=29.0.0 +telegram_bot_api_version=29.0.0-branch_29.0.0-build2978 micro_utils_version=0.26.3 serialization_version=1.9.0 ktor_version=3.2.3 diff --git a/settings.gradle b/settings.gradle index c8813ac..63cf651 100644 --- a/settings.gradle +++ b/settings.gradle @@ -61,3 +61,5 @@ include ":MemberUpdatedWatcherBot" include ":WebHooks" include ":SuggestedPosts" + +include ":ChecklistsBot" From 34be1a25b271f43950304d0f0085ec338ab60a87 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 23 Sep 2025 16:34:57 +0600 Subject: [PATCH 7/8] update SuggestedPostsBot to include printing of paid post publishing --- SuggestedPosts/src/main/kotlin/SuggestedPostsBot.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/SuggestedPosts/src/main/kotlin/SuggestedPostsBot.kt b/SuggestedPosts/src/main/kotlin/SuggestedPostsBot.kt index 197eafb..6553b2b 100644 --- a/SuggestedPosts/src/main/kotlin/SuggestedPostsBot.kt +++ b/SuggestedPosts/src/main/kotlin/SuggestedPostsBot.kt @@ -12,6 +12,7 @@ import dev.inmo.tgbotapi.extensions.api.send.reply import dev.inmo.tgbotapi.extensions.api.send.resend import dev.inmo.tgbotapi.extensions.api.send.send import dev.inmo.tgbotapi.extensions.api.suggested.approveSuggestedPost +import dev.inmo.tgbotapi.extensions.api.suggested.declineSuggestedPost import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContextData import dev.inmo.tgbotapi.extensions.behaviour_builder.buildSubcontextInitialAction import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.waitSuggestedPostApproved @@ -29,6 +30,7 @@ import dev.inmo.tgbotapi.extensions.utils.channelDirectMessagesContentMessageOrN import dev.inmo.tgbotapi.extensions.utils.previewChannelDirectMessagesChatOrNull import dev.inmo.tgbotapi.extensions.utils.suggestedChannelDirectMessagesContentMessageOrNull import dev.inmo.tgbotapi.types.message.SuggestedPostParameters +import dev.inmo.tgbotapi.types.message.abstracts.ChannelPaidPost import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage import dev.inmo.tgbotapi.types.update.abstracts.Update import dev.inmo.tgbotapi.utils.firstOf @@ -84,7 +86,6 @@ suspend fun main(vararg args: String) { subcontextUpdatesFilter = { _, _ -> true } // important to not miss updates in channel for waitSuggestedPost events ) { message -> val suggestedPost = message.suggestedChannelDirectMessagesContentMessageOrNull() ?: return@onContentMessage - val chat = getChat(message.chat) firstOf( { @@ -102,11 +103,15 @@ suspend fun main(vararg args: String) { delay(1000L) send(suggestedPost.chat, "${3 - i}") } - approveSuggestedPost(suggestedPost) + declineSuggestedPost(suggestedPost) }, ) } + onContentMessage(initialFilter = { it is ChannelPaidPost<*> }) { + println(it) + } + onSuggestedPostPaid { println(it) reply(it, "Paid") From ea74f884bf3f690046e843a02e133665dad05b4e Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 25 Sep 2025 14:05:44 +0600 Subject: [PATCH 8/8] change vrsion of telegram bot api --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index f78ada0..9982181 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ kotlin.daemon.jvmargs=-Xmx3g -Xms500m kotlin_version=2.2.10 -telegram_bot_api_version=29.0.0-branch_29.0.0-build2978 +telegram_bot_api_version=29.0.0 micro_utils_version=0.26.3 serialization_version=1.9.0 ktor_version=3.2.3