@@ -5,13 +5,17 @@ import dev.inmo.kslog.common.setDefaultKSLog
55import dev.inmo.micro_utils.common.Percentage
66import dev.inmo.tgbotapi.extensions.api.answers.answer
77import dev.inmo.tgbotapi.extensions.api.bot.getMe
8+ import dev.inmo.tgbotapi.extensions.api.business.getBusinessAccountStarBalance
89import dev.inmo.tgbotapi.extensions.api.business.deleteBusinessMessages
10+ import dev.inmo.tgbotapi.extensions.api.business.getBusinessAccountGifts
11+ import dev.inmo.tgbotapi.extensions.api.business.getBusinessAccountGiftsFlow
912import dev.inmo.tgbotapi.extensions.api.business.readBusinessMessage
1013import dev.inmo.tgbotapi.extensions.api.business.removeBusinessAccountProfilePhoto
1114import dev.inmo.tgbotapi.extensions.api.business.setBusinessAccountBio
1215import dev.inmo.tgbotapi.extensions.api.business.setBusinessAccountName
1316import dev.inmo.tgbotapi.extensions.api.business.setBusinessAccountProfilePhoto
1417import dev.inmo.tgbotapi.extensions.api.business.setBusinessAccountUsername
18+ import dev.inmo.tgbotapi.extensions.api.business.transferBusinessAccountStars
1519import dev.inmo.tgbotapi.extensions.api.chat.get.getChat
1620import dev.inmo.tgbotapi.extensions.api.chat.modify.pinChatMessage
1721import dev.inmo.tgbotapi.extensions.api.chat.modify.unpinChatMessage
@@ -51,6 +55,7 @@ import dev.inmo.tgbotapi.types.stories.StoryAreaPosition
5155import dev.inmo.tgbotapi.types.stories.StoryAreaType
5256import dev.inmo.tgbotapi.utils.botCommand
5357import dev.inmo.tgbotapi.utils.code
58+ import dev.inmo.tgbotapi.utils.extensions.splitForText
5459import dev.inmo.tgbotapi.utils.row
5560import korlibs.time.seconds
5661import kotlinx.coroutines.CoroutineScope
@@ -235,6 +240,65 @@ suspend fun main(args: Array<String>) {
235240 }
236241 }
237242 }
243+ onCommand(" get_business_account_star_balance" , initialFilter = { it.chat is PrivateChat }) {
244+ val businessConnectionId = chatsBusinessConnections[it.chat.id] ? : return @onCommand
245+ val starAmount = runCatching {
246+ getBusinessAccountStarBalance(businessConnectionId)
247+ }.getOrElse {
248+ it.printStackTrace()
249+ null
250+ }
251+ reply(it) {
252+ if (starAmount != null ) {
253+ + " Account stars amount: $starAmount "
254+ } else {
255+ + " Account stars amount has not been got"
256+ }
257+ }
258+ }
259+ onCommandWithArgs(" transfer_business_account_stars" , initialFilter = { it.chat is PrivateChat }) { it, args ->
260+ val businessConnectionId = chatsBusinessConnections[it.chat.id] ? : return @onCommandWithArgs
261+ val count = args.firstOrNull() ?.toIntOrNull() ? : reply(it) {
262+ " Pass amount of stars to transfer to bot with command"
263+ }.let {
264+ return @onCommandWithArgs
265+ }
266+ val transferred = runCatching {
267+ transferBusinessAccountStars(businessConnectionId, count)
268+ }.getOrElse {
269+ it.printStackTrace()
270+ false
271+ }
272+ reply(it) {
273+ if (transferred) {
274+ + " Stars have been transferred"
275+ } else {
276+ + " Stars have not been transferred"
277+ }
278+ }
279+ }
280+ onCommand(" get_business_account_gifts" , initialFilter = { it.chat is PrivateChat }) {
281+ val businessConnectionId = chatsBusinessConnections[it.chat.id] ? : return @onCommand
282+ val giftsFlow = runCatching {
283+ getBusinessAccountGiftsFlow(businessConnectionId)
284+ }.getOrElse {
285+ it.printStackTrace()
286+ null
287+ }
288+ if (giftsFlow == null ) {
289+ reply(it) {
290+ + " Error in receiving of gifts"
291+ }
292+ } else {
293+ giftsFlow.collect { giftsPage ->
294+ giftsPage.gifts.joinToString {
295+ it.toString()
296+ }.splitForText().forEach { message ->
297+ reply(it, message)
298+ }
299+ }
300+ }
301+ }
238302 onCommand(" set_business_account_bio" , requireOnlyCommandInMessage = false , initialFilter = { it.chat is PrivateChat }) {
239303 val initialBio = getChat(it.chat).extendedPrivateChatOrThrow().bio
240304 val bio = it.content.text.removePrefix(" /set_business_account_bio" ).trim()
0 commit comments