Skip to content

Commit 69eda92

Browse files
add set business account profile photo tests
1 parent aee070c commit 69eda92

File tree

2 files changed

+67
-2
lines changed

2 files changed

+67
-2
lines changed

BusinessConnectionsBot/src/main/kotlin/BusinessConnectionsBot.kt

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,38 @@ import dev.inmo.tgbotapi.extensions.api.answers.answer
66
import dev.inmo.tgbotapi.extensions.api.bot.getMe
77
import dev.inmo.tgbotapi.extensions.api.business.deleteBusinessMessages
88
import dev.inmo.tgbotapi.extensions.api.business.readBusinessMessage
9+
import dev.inmo.tgbotapi.extensions.api.business.removeBusinessAccountProfilePhoto
910
import dev.inmo.tgbotapi.extensions.api.business.setBusinessAccountBio
1011
import dev.inmo.tgbotapi.extensions.api.business.setBusinessAccountName
12+
import dev.inmo.tgbotapi.extensions.api.business.setBusinessAccountProfilePhoto
1113
import dev.inmo.tgbotapi.extensions.api.business.setBusinessAccountUsername
1214
import dev.inmo.tgbotapi.extensions.api.chat.get.getChat
1315
import dev.inmo.tgbotapi.extensions.api.chat.modify.pinChatMessage
1416
import dev.inmo.tgbotapi.extensions.api.chat.modify.unpinChatMessage
17+
import dev.inmo.tgbotapi.extensions.api.files.downloadFileToTemp
1518
import dev.inmo.tgbotapi.extensions.api.get.getBusinessConnection
1619
import dev.inmo.tgbotapi.extensions.api.send.reply
1720
import dev.inmo.tgbotapi.extensions.api.send.send
1821
import dev.inmo.tgbotapi.extensions.behaviour_builder.telegramBotWithBehaviourAndLongPolling
1922
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.*
23+
import dev.inmo.tgbotapi.extensions.utils.commonMessageOrNull
2024
import dev.inmo.tgbotapi.extensions.utils.extendedPrivateChatOrThrow
2125
import dev.inmo.tgbotapi.extensions.utils.ifAccessibleMessage
2226
import dev.inmo.tgbotapi.extensions.utils.ifBusinessContentMessage
2327
import dev.inmo.tgbotapi.extensions.utils.textContentOrNull
2428
import dev.inmo.tgbotapi.extensions.utils.types.buttons.dataButton
2529
import 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
2633
import dev.inmo.tgbotapi.types.ChatId
2734
import dev.inmo.tgbotapi.types.MessageId
2835
import dev.inmo.tgbotapi.types.RawChatId
2936
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
3037
import 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
3141
import dev.inmo.tgbotapi.utils.code
3242
import dev.inmo.tgbotapi.utils.row
3343
import 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
}

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ kotlin.daemon.jvmargs=-Xmx3g -Xms500m
66

77

88
kotlin_version=2.1.20
9-
telegram_bot_api_version=25.0.0-rc5
9+
telegram_bot_api_version=25.0.0-rc7
1010
micro_utils_version=0.25.3
1111
serialization_version=1.8.0
1212
ktor_version=3.1.1

0 commit comments

Comments
 (0)