mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2024-11-26 03:58:44 +00:00
sending media groups api updates
This commit is contained in:
parent
e9a05c4930
commit
1ee73dd406
@ -14,8 +14,10 @@ import kotlinx.serialization.*
|
|||||||
import kotlinx.serialization.builtins.ListSerializer
|
import kotlinx.serialization.builtins.ListSerializer
|
||||||
import kotlinx.serialization.json.buildJsonArray
|
import kotlinx.serialization.json.buildJsonArray
|
||||||
|
|
||||||
@RiskFeature("Media groups contains restrictions related to combinations of media types. Currently it is possible to" +
|
const val rawSendingMediaGroupsWarning = "Media groups contains restrictions related to combinations of media" +
|
||||||
" combine photo + video OR audio OR documents")
|
" types. Currently it is possible to combine photo + video OR audio OR documents"
|
||||||
|
|
||||||
|
@RiskFeature(rawSendingMediaGroupsWarning)
|
||||||
fun SendMediaGroup(
|
fun SendMediaGroup(
|
||||||
chatId: ChatIdentifier,
|
chatId: ChatIdentifier,
|
||||||
media: List<MediaGroupMemberInputMedia>,
|
media: List<MediaGroupMemberInputMedia>,
|
||||||
@ -56,28 +58,35 @@ fun SendMediaGroup(
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this method to be sure that you are correctly sending playlist with audios
|
* Use this method to be sure that you are correctly sending playlist with audios
|
||||||
|
*
|
||||||
|
* @see InputMediaAudio
|
||||||
*/
|
*/
|
||||||
@Suppress("NOTHING_TO_INLINE")
|
@Suppress("NOTHING_TO_INLINE")
|
||||||
inline fun SendPlaylist(
|
inline fun SendPlaylist(
|
||||||
chatId: ChatIdentifier,
|
chatId: ChatIdentifier,
|
||||||
media: List<InputMediaAudio>,
|
media: List<AudioMediaGroupMemberInputMedia>,
|
||||||
disableNotification: Boolean = false,
|
disableNotification: Boolean = false,
|
||||||
replyToMessageId: MessageIdentifier? = null
|
replyToMessageId: MessageIdentifier? = null
|
||||||
) = SendMediaGroup(chatId, media, disableNotification, replyToMessageId)
|
) = SendMediaGroup(chatId, media, disableNotification, replyToMessageId)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this method to be sure that you are correctly sending documents media group
|
* Use this method to be sure that you are correctly sending documents media group
|
||||||
|
*
|
||||||
|
* @see InputMediaDocument
|
||||||
*/
|
*/
|
||||||
@Suppress("NOTHING_TO_INLINE")
|
@Suppress("NOTHING_TO_INLINE")
|
||||||
inline fun SendDocumentsGroup(
|
inline fun SendDocumentsGroup(
|
||||||
chatId: ChatIdentifier,
|
chatId: ChatIdentifier,
|
||||||
media: List<InputMediaDocument>,
|
media: List<DocumentMediaGroupMemberInputMedia>,
|
||||||
disableNotification: Boolean = false,
|
disableNotification: Boolean = false,
|
||||||
replyToMessageId: MessageIdentifier? = null
|
replyToMessageId: MessageIdentifier? = null
|
||||||
) = SendMediaGroup(chatId, media, disableNotification, replyToMessageId)
|
) = SendMediaGroup(chatId, media, disableNotification, replyToMessageId)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this method to be sure that you are correctly sending visual media group
|
* Use this method to be sure that you are correctly sending visual media group
|
||||||
|
*
|
||||||
|
* @see InputMediaPhoto
|
||||||
|
* @see InputMediaVideo
|
||||||
*/
|
*/
|
||||||
@Suppress("NOTHING_TO_INLINE")
|
@Suppress("NOTHING_TO_INLINE")
|
||||||
inline fun SendVisualMediaGroup(
|
inline fun SendVisualMediaGroup(
|
||||||
|
@ -23,7 +23,7 @@ data class InputMediaAudio(
|
|||||||
override val performer: String? = null,
|
override val performer: String? = null,
|
||||||
override val title: String? = null,
|
override val title: String? = null,
|
||||||
override val thumb: InputFile? = null
|
override val thumb: InputFile? = null
|
||||||
) : InputMedia, MediaGroupMemberInputMedia, DuratedInputMedia, ThumbedInputMedia, TitledInputMedia, CaptionedOutput, Performerable {
|
) : InputMedia, AudioMediaGroupMemberInputMedia, DuratedInputMedia, ThumbedInputMedia, TitledInputMedia, CaptionedOutput, Performerable {
|
||||||
override val type: String = audioInputMediaType
|
override val type: String = audioInputMediaType
|
||||||
|
|
||||||
override fun serialize(format: StringFormat): String = format.encodeToString(serializer(), this)
|
override fun serialize(format: StringFormat): String = format.encodeToString(serializer(), this)
|
||||||
|
@ -17,7 +17,7 @@ data class InputMediaDocument(
|
|||||||
@SerialName(parseModeField)
|
@SerialName(parseModeField)
|
||||||
override val parseMode: ParseMode? = null,
|
override val parseMode: ParseMode? = null,
|
||||||
override val thumb: InputFile? = null
|
override val thumb: InputFile? = null
|
||||||
) : InputMedia, MediaGroupMemberInputMedia, ThumbedInputMedia, CaptionedOutput {
|
) : InputMedia, DocumentMediaGroupMemberInputMedia, ThumbedInputMedia, CaptionedOutput {
|
||||||
override val type: String = documentInputMediaType
|
override val type: String = documentInputMediaType
|
||||||
|
|
||||||
override fun serialize(format: StringFormat): String = format.encodeToString(serializer(), this)
|
override fun serialize(format: StringFormat): String = format.encodeToString(serializer(), this)
|
||||||
|
@ -19,5 +19,8 @@ interface MediaGroupMemberInputMedia : InputMedia, CaptionedOutput {
|
|||||||
fun serialize(format: StringFormat): String
|
fun serialize(format: StringFormat): String
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface AudioMediaGroupMemberInputMedia: MediaGroupMemberInputMedia
|
||||||
|
interface DocumentMediaGroupMemberInputMedia: MediaGroupMemberInputMedia
|
||||||
|
|
||||||
@Serializable(MediaGroupMemberInputMediaSerializer::class)
|
@Serializable(MediaGroupMemberInputMediaSerializer::class)
|
||||||
interface VisualMediaGroupMemberInputMedia : MediaGroupMemberInputMedia
|
interface VisualMediaGroupMemberInputMedia : MediaGroupMemberInputMedia
|
||||||
|
@ -39,7 +39,7 @@ data class AudioContent(
|
|||||||
replyMarkup
|
replyMarkup
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun toMediaGroupMemberInputMedia(): MediaGroupMemberInputMedia = media.toInputMediaAudio(
|
override fun toMediaGroupMemberInputMedia(): InputMediaAudio = media.toInputMediaAudio(
|
||||||
toHtmlCaptions().firstOrNull(),
|
toHtmlCaptions().firstOrNull(),
|
||||||
HTMLParseMode
|
HTMLParseMode
|
||||||
)
|
)
|
||||||
|
@ -39,7 +39,7 @@ data class DocumentContent(
|
|||||||
replyMarkup
|
replyMarkup
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun toMediaGroupMemberInputMedia(): MediaGroupMemberInputMedia = media.toInputMediaDocument(
|
override fun toMediaGroupMemberInputMedia(): InputMediaDocument = media.toInputMediaDocument(
|
||||||
toHtmlCaptions().firstOrNull(),
|
toHtmlCaptions().firstOrNull(),
|
||||||
HTMLParseMode
|
HTMLParseMode
|
||||||
)
|
)
|
||||||
|
@ -38,7 +38,7 @@ data class PhotoContent(
|
|||||||
replyMarkup
|
replyMarkup
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun toMediaGroupMemberInputMedia(): MediaGroupMemberInputMedia = InputMediaPhoto(
|
override fun toMediaGroupMemberInputMedia(): InputMediaPhoto = InputMediaPhoto(
|
||||||
media.fileId,
|
media.fileId,
|
||||||
toHtmlCaptions().firstOrNull(),
|
toHtmlCaptions().firstOrNull(),
|
||||||
HTMLParseMode
|
HTMLParseMode
|
||||||
|
@ -42,7 +42,7 @@ data class VideoContent(
|
|||||||
replyMarkup
|
replyMarkup
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun toMediaGroupMemberInputMedia(): MediaGroupMemberInputMedia = InputMediaVideo(
|
override fun toMediaGroupMemberInputMedia(): InputMediaVideo = InputMediaVideo(
|
||||||
media.fileId,
|
media.fileId,
|
||||||
toHtmlCaptions().firstOrNull(),
|
toHtmlCaptions().firstOrNull(),
|
||||||
HTMLParseMode,
|
HTMLParseMode,
|
||||||
|
@ -1,13 +1,18 @@
|
|||||||
package dev.inmo.tgbotapi.extensions.api.send.media
|
package dev.inmo.tgbotapi.extensions.api.send.media
|
||||||
|
|
||||||
import dev.inmo.tgbotapi.bot.TelegramBot
|
import dev.inmo.tgbotapi.bot.TelegramBot
|
||||||
import dev.inmo.tgbotapi.requests.send.media.SendMediaGroup
|
import dev.inmo.tgbotapi.requests.send.media.*
|
||||||
import dev.inmo.tgbotapi.types.ChatIdentifier
|
import dev.inmo.tgbotapi.types.ChatIdentifier
|
||||||
import dev.inmo.tgbotapi.types.InputMedia.MediaGroupMemberInputMedia
|
import dev.inmo.tgbotapi.types.InputMedia.*
|
||||||
import dev.inmo.tgbotapi.types.MessageIdentifier
|
import dev.inmo.tgbotapi.types.MessageIdentifier
|
||||||
import dev.inmo.tgbotapi.types.chat.abstracts.Chat
|
import dev.inmo.tgbotapi.types.chat.abstracts.Chat
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.Message
|
import dev.inmo.tgbotapi.types.message.abstracts.Message
|
||||||
|
import dev.inmo.tgbotapi.utils.RiskFeature
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see SendMediaGroup
|
||||||
|
*/
|
||||||
|
@RiskFeature(rawSendingMediaGroupsWarning)
|
||||||
suspend fun TelegramBot.sendMediaGroup(
|
suspend fun TelegramBot.sendMediaGroup(
|
||||||
chatId: ChatIdentifier,
|
chatId: ChatIdentifier,
|
||||||
media: List<MediaGroupMemberInputMedia>,
|
media: List<MediaGroupMemberInputMedia>,
|
||||||
@ -19,6 +24,10 @@ suspend fun TelegramBot.sendMediaGroup(
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see SendMediaGroup
|
||||||
|
*/
|
||||||
|
@RiskFeature(rawSendingMediaGroupsWarning)
|
||||||
suspend fun TelegramBot.sendMediaGroup(
|
suspend fun TelegramBot.sendMediaGroup(
|
||||||
chat: Chat,
|
chat: Chat,
|
||||||
media: List<MediaGroupMemberInputMedia>,
|
media: List<MediaGroupMemberInputMedia>,
|
||||||
@ -28,12 +37,108 @@ suspend fun TelegramBot.sendMediaGroup(
|
|||||||
chat.id, media, disableNotification, replyToMessageId
|
chat.id, media, disableNotification, replyToMessageId
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see SendPlaylist
|
||||||
|
*/
|
||||||
|
suspend fun TelegramBot.sendPlaylist(
|
||||||
|
chatId: ChatIdentifier,
|
||||||
|
media: List<AudioMediaGroupMemberInputMedia>,
|
||||||
|
disableNotification: Boolean = false,
|
||||||
|
replyToMessageId: MessageIdentifier? = null
|
||||||
|
) = execute(
|
||||||
|
SendPlaylist(
|
||||||
|
chatId, media, disableNotification, replyToMessageId
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see SendPlaylist
|
||||||
|
*/
|
||||||
|
suspend fun TelegramBot.sendPlaylist(
|
||||||
|
chat: Chat,
|
||||||
|
media: List<AudioMediaGroupMemberInputMedia>,
|
||||||
|
disableNotification: Boolean = false,
|
||||||
|
replyToMessageId: MessageIdentifier? = null
|
||||||
|
) = sendPlaylist(
|
||||||
|
chat.id, media, disableNotification, replyToMessageId
|
||||||
|
)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see SendDocumentsGroup
|
||||||
|
*/
|
||||||
|
suspend fun TelegramBot.sendDocumentsGroup(
|
||||||
|
chatId: ChatIdentifier,
|
||||||
|
media: List<DocumentMediaGroupMemberInputMedia>,
|
||||||
|
disableNotification: Boolean = false,
|
||||||
|
replyToMessageId: MessageIdentifier? = null
|
||||||
|
) = execute(
|
||||||
|
SendDocumentsGroup(
|
||||||
|
chatId, media, disableNotification, replyToMessageId
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see SendDocumentsGroup
|
||||||
|
*/
|
||||||
|
suspend fun TelegramBot.sendDocumentsGroup(
|
||||||
|
chat: Chat,
|
||||||
|
media: List<DocumentMediaGroupMemberInputMedia>,
|
||||||
|
disableNotification: Boolean = false,
|
||||||
|
replyToMessageId: MessageIdentifier? = null
|
||||||
|
) = sendDocumentsGroup(
|
||||||
|
chat.id, media, disableNotification, replyToMessageId
|
||||||
|
)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see SendVisualMediaGroup
|
||||||
|
*/
|
||||||
|
suspend fun TelegramBot.sendVisualMediaGroup(
|
||||||
|
chatId: ChatIdentifier,
|
||||||
|
media: List<VisualMediaGroupMemberInputMedia>,
|
||||||
|
disableNotification: Boolean = false,
|
||||||
|
replyToMessageId: MessageIdentifier? = null
|
||||||
|
) = execute(
|
||||||
|
SendVisualMediaGroup(
|
||||||
|
chatId, media, disableNotification, replyToMessageId
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see SendVisualMediaGroup
|
||||||
|
*/
|
||||||
|
suspend fun TelegramBot.sendVisualMediaGroup(
|
||||||
|
chat: Chat,
|
||||||
|
media: List<VisualMediaGroupMemberInputMedia>,
|
||||||
|
disableNotification: Boolean = false,
|
||||||
|
replyToMessageId: MessageIdentifier? = null
|
||||||
|
) = sendVisualMediaGroup(
|
||||||
|
chat.id, media, disableNotification, replyToMessageId
|
||||||
|
)
|
||||||
|
|
||||||
suspend inline fun TelegramBot.replyWithMediaGroup(
|
suspend inline fun TelegramBot.replyWithMediaGroup(
|
||||||
to: Message,
|
to: Message,
|
||||||
media: List<MediaGroupMemberInputMedia>,
|
media: List<MediaGroupMemberInputMedia>,
|
||||||
disableNotification: Boolean = false
|
disableNotification: Boolean = false
|
||||||
) = sendMediaGroup(to.chat, media, disableNotification, to.messageId)
|
) = sendMediaGroup(to.chat, media, disableNotification, to.messageId)
|
||||||
|
|
||||||
|
suspend inline fun TelegramBot.replyWithPlaylist(
|
||||||
|
to: Message,
|
||||||
|
media: List<AudioMediaGroupMemberInputMedia>,
|
||||||
|
disableNotification: Boolean = false
|
||||||
|
) = sendPlaylist(to.chat, media, disableNotification, to.messageId)
|
||||||
|
|
||||||
|
suspend inline fun TelegramBot.replyWithDocumentsGroup(
|
||||||
|
to: Message,
|
||||||
|
media: List<DocumentMediaGroupMemberInputMedia>,
|
||||||
|
disableNotification: Boolean = false
|
||||||
|
) = sendDocumentsGroup(to.chat, media, disableNotification, to.messageId)
|
||||||
|
|
||||||
|
suspend inline fun TelegramBot.replyWithVisualMediaGroup(
|
||||||
|
to: Message,
|
||||||
|
media: List<VisualMediaGroupMemberInputMedia>,
|
||||||
|
disableNotification: Boolean = false
|
||||||
|
) = sendVisualMediaGroup(to.chat, media, disableNotification, to.messageId)
|
||||||
|
|
||||||
suspend inline fun TelegramBot.reply(
|
suspend inline fun TelegramBot.reply(
|
||||||
to: Message,
|
to: Message,
|
||||||
media: List<MediaGroupMemberInputMedia>,
|
media: List<MediaGroupMemberInputMedia>,
|
||||||
|
Loading…
Reference in New Issue
Block a user