diff --git a/BusinessConnectionsBot/src/main/kotlin/BusinessConnectionsBot.kt b/BusinessConnectionsBot/src/main/kotlin/BusinessConnectionsBot.kt index a314495..9b9e1f6 100644 --- a/BusinessConnectionsBot/src/main/kotlin/BusinessConnectionsBot.kt +++ b/BusinessConnectionsBot/src/main/kotlin/BusinessConnectionsBot.kt @@ -5,13 +5,17 @@ import dev.inmo.kslog.common.setDefaultKSLog import dev.inmo.micro_utils.common.Percentage import dev.inmo.tgbotapi.extensions.api.answers.answer import dev.inmo.tgbotapi.extensions.api.bot.getMe +import dev.inmo.tgbotapi.extensions.api.business.getBusinessAccountStarBalance import dev.inmo.tgbotapi.extensions.api.business.deleteBusinessMessages +import dev.inmo.tgbotapi.extensions.api.business.getBusinessAccountGifts +import dev.inmo.tgbotapi.extensions.api.business.getBusinessAccountGiftsFlow import dev.inmo.tgbotapi.extensions.api.business.readBusinessMessage import dev.inmo.tgbotapi.extensions.api.business.removeBusinessAccountProfilePhoto import dev.inmo.tgbotapi.extensions.api.business.setBusinessAccountBio import dev.inmo.tgbotapi.extensions.api.business.setBusinessAccountName import dev.inmo.tgbotapi.extensions.api.business.setBusinessAccountProfilePhoto import dev.inmo.tgbotapi.extensions.api.business.setBusinessAccountUsername +import dev.inmo.tgbotapi.extensions.api.business.transferBusinessAccountStars import dev.inmo.tgbotapi.extensions.api.chat.get.getChat import dev.inmo.tgbotapi.extensions.api.chat.modify.pinChatMessage import dev.inmo.tgbotapi.extensions.api.chat.modify.unpinChatMessage @@ -51,6 +55,7 @@ import dev.inmo.tgbotapi.types.stories.StoryAreaPosition import dev.inmo.tgbotapi.types.stories.StoryAreaType import dev.inmo.tgbotapi.utils.botCommand import dev.inmo.tgbotapi.utils.code +import dev.inmo.tgbotapi.utils.extensions.splitForText import dev.inmo.tgbotapi.utils.row import korlibs.time.seconds import kotlinx.coroutines.CoroutineScope @@ -235,6 +240,65 @@ suspend fun main(args: Array) { } } } + onCommand("get_business_account_star_balance", initialFilter = { it.chat is PrivateChat }) { + val businessConnectionId = chatsBusinessConnections[it.chat.id] ?: return@onCommand + val starAmount = runCatching { + getBusinessAccountStarBalance(businessConnectionId) + }.getOrElse { + it.printStackTrace() + null + } + reply(it) { + if (starAmount != null) { + +"Account stars amount: $starAmount" + } else { + +"Account stars amount has not been got" + } + } + } + onCommandWithArgs("transfer_business_account_stars", initialFilter = { it.chat is PrivateChat }) { it, args -> + val businessConnectionId = chatsBusinessConnections[it.chat.id] ?: return@onCommandWithArgs + val count = args.firstOrNull() ?.toIntOrNull() ?: reply(it) { + "Pass amount of stars to transfer to bot with command" + }.let { + return@onCommandWithArgs + } + val transferred = runCatching { + transferBusinessAccountStars(businessConnectionId, count) + }.getOrElse { + it.printStackTrace() + false + } + reply(it) { + if (transferred) { + +"Stars have been transferred" + } else { + +"Stars have not been transferred" + } + } + } + onCommand("get_business_account_gifts", initialFilter = { it.chat is PrivateChat }) { + val businessConnectionId = chatsBusinessConnections[it.chat.id] ?: return@onCommand + val giftsFlow = runCatching { + getBusinessAccountGiftsFlow(businessConnectionId) + }.getOrElse { + it.printStackTrace() + null + } + if (giftsFlow == null) { + reply(it) { + +"Error in receiving of gifts" + } + } else { + giftsFlow.collect { giftsPage -> + giftsPage.gifts.joinToString { + it.toString() + }.splitForText().forEach { message -> + reply(it, message) + } + } + } + } onCommand("set_business_account_bio", requireOnlyCommandInMessage = false, initialFilter = { it.chat is PrivateChat }) { val initialBio = getChat(it.chat).extendedPrivateChatOrThrow().bio val bio = it.content.text.removePrefix("/set_business_account_bio").trim() diff --git a/CustomBot/src/main/kotlin/CustomBot.kt b/CustomBot/src/main/kotlin/CustomBot.kt index 6cf9334..4bf65a2 100644 --- a/CustomBot/src/main/kotlin/CustomBot.kt +++ b/CustomBot/src/main/kotlin/CustomBot.kt @@ -4,6 +4,7 @@ import dev.inmo.kslog.common.defaultMessageFormatter import dev.inmo.kslog.common.setDefaultKSLog import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions import dev.inmo.tgbotapi.extensions.api.bot.getMe +import dev.inmo.tgbotapi.extensions.api.chat.get.getChat import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContextData import dev.inmo.tgbotapi.extensions.behaviour_builder.buildSubcontextInitialAction import dev.inmo.tgbotapi.extensions.behaviour_builder.telegramBotWithBehaviourAndLongPolling @@ -65,6 +66,7 @@ suspend fun main(vararg args: String) { onCommand("start") { println(data.update) println(data.commonMessage) + println(getChat(it.chat)) } onCommand(