@@ -2,6 +2,7 @@ import dev.inmo.kslog.common.KSLog
22import dev.inmo.kslog.common.LogLevel
33import dev.inmo.kslog.common.defaultMessageFormatter
44import dev.inmo.kslog.common.setDefaultKSLog
5+ import dev.inmo.micro_utils.common.Percentage
56import dev.inmo.tgbotapi.extensions.api.answers.answer
67import dev.inmo.tgbotapi.extensions.api.bot.getMe
78import dev.inmo.tgbotapi.extensions.api.business.deleteBusinessMessages
@@ -18,6 +19,7 @@ import dev.inmo.tgbotapi.extensions.api.files.downloadFileToTemp
1819import dev.inmo.tgbotapi.extensions.api.get.getBusinessConnection
1920import dev.inmo.tgbotapi.extensions.api.send.reply
2021import dev.inmo.tgbotapi.extensions.api.send.send
22+ import dev.inmo.tgbotapi.extensions.api.stories.postStory
2123import dev.inmo.tgbotapi.extensions.behaviour_builder.telegramBotWithBehaviourAndLongPolling
2224import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.*
2325import dev.inmo.tgbotapi.extensions.utils.commonMessageOrNull
@@ -30,6 +32,7 @@ import dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard
3032import dev.inmo.tgbotapi.extensions.utils.withContentOrNull
3133import dev.inmo.tgbotapi.requests.abstracts.multipartFile
3234import dev.inmo.tgbotapi.requests.business_connection.InputProfilePhoto
35+ import dev.inmo.tgbotapi.requests.stories.PostStory
3336import dev.inmo.tgbotapi.types.ChatId
3437import dev.inmo.tgbotapi.types.MessageId
3538import dev.inmo.tgbotapi.types.RawChatId
@@ -38,6 +41,11 @@ import dev.inmo.tgbotapi.types.chat.PrivateChat
3841import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage
3942import dev.inmo.tgbotapi.types.message.content.PhotoContent
4043import dev.inmo.tgbotapi.types.message.content.TextContent
44+ import dev.inmo.tgbotapi.types.stories.InputStoryContent
45+ import dev.inmo.tgbotapi.types.stories.StoryArea
46+ import dev.inmo.tgbotapi.types.stories.StoryAreaPosition
47+ import dev.inmo.tgbotapi.types.stories.StoryAreaType
48+ import dev.inmo.tgbotapi.utils.botCommand
4149import dev.inmo.tgbotapi.utils.code
4250import dev.inmo.tgbotapi.utils.row
4351import korlibs.time.seconds
@@ -316,5 +324,54 @@ suspend fun main(args: Array<String>) {
316324 onCommand(" set_business_account_profile_photo_public" , initialFilter = { it.chat is PrivateChat }) {
317325 handleSetProfilePhoto(it, true )
318326 }
327+
328+ onCommand(" postStory" , initialFilter = { it.chat is PrivateChat }) {
329+ val businessConnectionId = chatsBusinessConnections[it.chat.id] ? : return @onCommand
330+ val replyTo = it.replyTo ?.commonMessageOrNull() ?.withContentOrNull<PhotoContent >()
331+ if (replyTo == null ) {
332+ reply(it) {
333+ + " Reply to photo for using of this command"
334+ }
335+ return @onCommand
336+ }
337+
338+ val set = runCatching {
339+ val file = downloadFileToTemp(replyTo.content)
340+ postStory(
341+ businessConnectionId,
342+ InputStoryContent .Photo (
343+ file.multipartFile()
344+ ),
345+ activePeriod = PostStory .ACTIVE_PERIOD_6_HOURS ,
346+ areas = listOf (
347+ StoryArea (
348+ StoryAreaPosition (
349+ x = Percentage .of100(50.0 ),
350+ y = Percentage .of100(50.0 ),
351+ width = Percentage .of100(8.0 ),
352+ height = Percentage .of100(8.0 ),
353+ rotationAngle = 45.0 ,
354+ cornerRadius = Percentage .of100(4.0 ),
355+ ),
356+ StoryAreaType .Link (
357+ " https://github.com/InsanusMokrassar/TelegramBotAPI-examples/blob/master/BusinessConnectionsBot/src/main/kotlin/BusinessConnectionsBot.kt"
358+ )
359+ )
360+ )
361+ ) {
362+ + " It is test of postStory :)"
363+ }
364+ }.getOrElse {
365+ it.printStackTrace()
366+ null
367+ }
368+ reply(it) {
369+ if (set != null ) {
370+ + " Story has been posted. You may unpost it with " + botCommand(" remove_story" )
371+ } else {
372+ + " Story has not been posted"
373+ }
374+ }
375+ }
319376 }.second.join()
320377}
0 commit comments