Skip to content

Commit 42c087b

Browse files
checks of live photos
1 parent 242c5fc commit 42c087b

2 files changed

Lines changed: 42 additions & 4 deletions

File tree

LivePhotosBot/src/main/kotlin/LivePhotosBot.kt

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,29 @@ import dev.inmo.tgbotapi.extensions.api.send.media.sendLivePhoto
99
import dev.inmo.tgbotapi.extensions.api.send.media.sendMediaGroup
1010
import dev.inmo.tgbotapi.extensions.api.send.media.sendPaidMedia
1111
import dev.inmo.tgbotapi.extensions.api.send.reply
12+
import dev.inmo.tgbotapi.extensions.api.send.replyWithLivePhoto
1213
import dev.inmo.tgbotapi.extensions.behaviour_builder.telegramBotWithBehaviourAndLongPolling
14+
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onCommand
1315
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onEditedLivePhoto
1416
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onLivePhoto
1517
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onLivePhotoGallery
18+
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onMediaGroupMessages
1619
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onPaidMediaInfoContent
20+
import dev.inmo.tgbotapi.extensions.utils.contentMessageOrNull
21+
import dev.inmo.tgbotapi.extensions.utils.photoContentOrNull
22+
import dev.inmo.tgbotapi.extensions.utils.photoFileOrNull
23+
import dev.inmo.tgbotapi.extensions.utils.videoContentOrNull
24+
import dev.inmo.tgbotapi.extensions.utils.videoFileOrNull
1725
import dev.inmo.tgbotapi.extensions.utils.withContentOrNull
1826
import dev.inmo.tgbotapi.types.message.content.LivePhotoContent
1927
import dev.inmo.tgbotapi.types.message.payments.PaidMedia
2028
import dev.inmo.tgbotapi.types.media.TelegramMediaLivePhoto
2129
import dev.inmo.tgbotapi.types.media.TelegramPaidMediaLivePhoto
2230
import dev.inmo.tgbotapi.types.media.toTelegramPaidMediaLivePhoto
31+
import dev.inmo.tgbotapi.types.message.content.MediaContent
32+
import dev.inmo.tgbotapi.types.message.content.MediaGroupContent
33+
import dev.inmo.tgbotapi.types.message.content.MediaGroupPartContent
34+
import dev.inmo.tgbotapi.types.message.content.VideoContent
2335
import dev.inmo.tgbotapi.utils.RiskFeature
2436
import kotlinx.coroutines.CoroutineScope
2537
import kotlinx.coroutines.Dispatchers
@@ -159,6 +171,20 @@ suspend fun main(vararg args: String) {
159171
println(" caption: ${message.content.text}")
160172
}
161173

174+
onMediaGroupMessages {
175+
val photo = it.content.group.firstNotNullOfOrNull {
176+
it.content.photoContentOrNull()
177+
} ?: return@onMediaGroupMessages
178+
val video = it.content.group.firstNotNullOfOrNull {
179+
it.content.videoContentOrNull()
180+
} ?: return@onMediaGroupMessages
181+
replyWithLivePhoto(
182+
it,
183+
video.media.fileId,
184+
photo.media.fileId
185+
)
186+
}
187+
162188
allUpdatesFlow.subscribeLoggingDropExceptions(scope = this) {
163189
println(it)
164190
}

PollsBot/src/main/kotlin/PollsBot.kt

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,18 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onPollOp
1717
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onPollUpdates
1818
import dev.inmo.tgbotapi.extensions.utils.accessibleMessageOrNull
1919
import dev.inmo.tgbotapi.extensions.utils.chatContentMessageOrNull
20+
import dev.inmo.tgbotapi.extensions.utils.contentMessageOrNull
2021
import dev.inmo.tgbotapi.extensions.utils.customEmojiTextSourceOrNull
2122
import dev.inmo.tgbotapi.extensions.utils.extensions.parseCommandsWithArgsSources
23+
import dev.inmo.tgbotapi.extensions.utils.withContentOrNull
2224
import dev.inmo.tgbotapi.types.BotCommand
2325
import dev.inmo.tgbotapi.types.IdChatIdentifier
2426
import dev.inmo.tgbotapi.types.PollId
2527
import dev.inmo.tgbotapi.types.ReplyParameters
2628
import dev.inmo.tgbotapi.types.media.TelegramMediaLocation
29+
import dev.inmo.tgbotapi.types.media.TelegramMediaSticker
2730
import dev.inmo.tgbotapi.types.media.TelegramMediaVenue
31+
import dev.inmo.tgbotapi.types.message.content.StickerContent
2832
import dev.inmo.tgbotapi.types.polls.InputPollOption
2933
import dev.inmo.tgbotapi.types.polls.PollAnswer
3034
import dev.inmo.tgbotapi.types.polls.QuizPoll
@@ -192,10 +196,11 @@ suspend fun main(vararg args: String) {
192196
// TelegramMediaVenue implements InputPollMedia and InputPollOptionMedia (InputMediaVenue)
193197
// Both can be used as poll question media or as option media
194198
onCommand("media_poll") {
199+
val replySticker = it.replyTo ?.contentMessageOrNull() ?.withContentOrNull<StickerContent>() ?.content ?.media
195200
val sentPoll = sendRegularPoll(
196201
it.chat.id,
197202
buildEntities { regular("Which venue would you visit?") },
198-
listOf(
203+
listOfNotNull(
199204
// InputPollOptionMedia via TelegramMediaVenue (InputMediaVenue)
200205
InputPollOption(
201206
media = TelegramMediaVenue(
@@ -210,6 +215,11 @@ suspend fun main(vararg args: String) {
210215
media = TelegramMediaLocation(latitude = 51.5007, longitude = -0.1246)
211216
) { regular("Big Ben") },
212217
InputPollOption { regular("Neither") },
218+
replySticker ?.let {
219+
InputPollOption(media = TelegramMediaSticker(replySticker.fileId)) {
220+
regular("Your sticker")
221+
}
222+
}
213223
),
214224
isAnonymous = false,
215225
// InputMediaLocation as InputPollMedia — poll question media
@@ -259,7 +269,7 @@ suspend fun main(vararg args: String) {
259269
InputPollOption { regular("Yes") },
260270
InputPollOption { regular("No") },
261271
),
262-
isAnonymous = false,
272+
isAnonymous = true,
263273
membersOnly = true,
264274
replyParameters = ReplyParameters(it)
265275
)
@@ -277,7 +287,7 @@ suspend fun main(vararg args: String) {
277287
InputPollOption { regular("Option A") },
278288
InputPollOption { regular("Option B") },
279289
),
280-
isAnonymous = false,
290+
isAnonymous = true,
281291
countryCodes = listOf("US", "DE", "JP"),
282292
replyParameters = ReplyParameters(it)
283293
)
@@ -372,6 +382,8 @@ suspend fun main(vararg args: String) {
372382
BotCommand("single_option", "Poll with 1 option (minimum is now 1, not 2)"),
373383
)
374384

375-
allUpdatesFlow.subscribeLoggingDropExceptions(scope = this) { println(it) }
385+
allUpdatesFlow.subscribeLoggingDropExceptions(scope = this) {
386+
println(it)
387+
}
376388
}.second.join()
377389
}

0 commit comments

Comments
 (0)