@@ -6,28 +6,38 @@ import dev.inmo.tgbotapi.extensions.api.answers.answer
66import dev.inmo.tgbotapi.extensions.api.bot.getMe
77import dev.inmo.tgbotapi.extensions.api.business.deleteBusinessMessages
88import dev.inmo.tgbotapi.extensions.api.business.readBusinessMessage
9+ import dev.inmo.tgbotapi.extensions.api.business.removeBusinessAccountProfilePhoto
910import dev.inmo.tgbotapi.extensions.api.business.setBusinessAccountBio
1011import dev.inmo.tgbotapi.extensions.api.business.setBusinessAccountName
12+ import dev.inmo.tgbotapi.extensions.api.business.setBusinessAccountProfilePhoto
1113import dev.inmo.tgbotapi.extensions.api.business.setBusinessAccountUsername
1214import dev.inmo.tgbotapi.extensions.api.chat.get.getChat
1315import dev.inmo.tgbotapi.extensions.api.chat.modify.pinChatMessage
1416import dev.inmo.tgbotapi.extensions.api.chat.modify.unpinChatMessage
17+ import dev.inmo.tgbotapi.extensions.api.files.downloadFileToTemp
1518import dev.inmo.tgbotapi.extensions.api.get.getBusinessConnection
1619import dev.inmo.tgbotapi.extensions.api.send.reply
1720import dev.inmo.tgbotapi.extensions.api.send.send
1821import dev.inmo.tgbotapi.extensions.behaviour_builder.telegramBotWithBehaviourAndLongPolling
1922import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.*
23+ import dev.inmo.tgbotapi.extensions.utils.commonMessageOrNull
2024import dev.inmo.tgbotapi.extensions.utils.extendedPrivateChatOrThrow
2125import dev.inmo.tgbotapi.extensions.utils.ifAccessibleMessage
2226import dev.inmo.tgbotapi.extensions.utils.ifBusinessContentMessage
2327import dev.inmo.tgbotapi.extensions.utils.textContentOrNull
2428import dev.inmo.tgbotapi.extensions.utils.types.buttons.dataButton
2529import dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard
30+ import dev.inmo.tgbotapi.extensions.utils.withContentOrNull
31+ import dev.inmo.tgbotapi.requests.abstracts.multipartFile
32+ import dev.inmo.tgbotapi.requests.business_connection.InputProfilePhoto
2633import dev.inmo.tgbotapi.types.ChatId
2734import dev.inmo.tgbotapi.types.MessageId
2835import dev.inmo.tgbotapi.types.RawChatId
2936import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
3037import dev.inmo.tgbotapi.types.chat.PrivateChat
38+ import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage
39+ import dev.inmo.tgbotapi.types.message.content.PhotoContent
40+ import dev.inmo.tgbotapi.types.message.content.TextContent
3141import dev.inmo.tgbotapi.utils.code
3242import dev.inmo.tgbotapi.utils.row
3343import korlibs.time.seconds
@@ -244,12 +254,67 @@ suspend fun main(args: Array<String>) {
244254 false
245255 }
246256 reply(it) {
247- if (set ) {
257+ if (reset ) {
248258 + " Account bio has been reset"
249259 } else {
250260 + " Account bio has not been set. Set it manually: " + code(initialBio)
251261 }
252262 }
253263 }
264+ suspend fun handleSetProfilePhoto (it : CommonMessage <TextContent >, isPublic : Boolean ) {
265+ val businessConnectionId = chatsBusinessConnections[it.chat.id] ? : return @handleSetProfilePhoto
266+ val replyTo = it.replyTo ?.commonMessageOrNull() ?.withContentOrNull<PhotoContent >()
267+ if (replyTo == null ) {
268+ reply(it) {
269+ + " Reply to photo for using of this command"
270+ }
271+ return @handleSetProfilePhoto
272+ }
273+
274+ val set = runCatching {
275+ val file = downloadFileToTemp(replyTo.content)
276+ setBusinessAccountProfilePhoto(
277+ businessConnectionId,
278+ InputProfilePhoto .Static (
279+ file.multipartFile()
280+ ),
281+ isPublic = isPublic
282+ )
283+ }.getOrElse {
284+ it.printStackTrace()
285+ false
286+ }
287+ reply(it) {
288+ if (set) {
289+ + " Account profile photo has been set. It will be reset within 15 seconds"
290+ } else {
291+ + " Account profile photo has not been set"
292+ }
293+ }
294+ if (set == false ) { return @handleSetProfilePhoto }
295+ delay(15 .seconds)
296+ val reset = runCatching {
297+ removeBusinessAccountProfilePhoto(
298+ businessConnectionId,
299+ isPublic = isPublic
300+ )
301+ }.getOrElse {
302+ it.printStackTrace()
303+ false
304+ }
305+ reply(it) {
306+ if (reset) {
307+ + " Account profile photo has been reset"
308+ } else {
309+ + " Account profile photo has not been set. Set it manually"
310+ }
311+ }
312+ }
313+ onCommand(" set_business_account_profile_photo" , initialFilter = { it.chat is PrivateChat }) {
314+ handleSetProfilePhoto(it, false )
315+ }
316+ onCommand(" set_business_account_profile_photo_public" , initialFilter = { it.chat is PrivateChat }) {
317+ handleSetProfilePhoto(it, true )
318+ }
254319 }.second.join()
255320}
0 commit comments