mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2024-11-22 08:13:47 +00:00
replies with texted content
This commit is contained in:
parent
d426cb1210
commit
49da0faf45
@ -5,6 +5,7 @@
|
|||||||
* `Core`:
|
* `Core`:
|
||||||
* New type `TextedMediaContent` which will unite `TextedInput` and `MediaContent`
|
* New type `TextedMediaContent` which will unite `TextedInput` and `MediaContent`
|
||||||
* `MediaGroupContent` and all subsequent inheritors have been replaced to the package `dev.inmo.tgbotapi.types.message.content.media`
|
* `MediaGroupContent` and all subsequent inheritors have been replaced to the package `dev.inmo.tgbotapi.types.message.content.media`
|
||||||
|
* Add `reply` functions with the texted content with including of text
|
||||||
|
|
||||||
## 0.38.11
|
## 0.38.11
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ import dev.inmo.tgbotapi.requests.abstracts.InputFile
|
|||||||
import dev.inmo.tgbotapi.requests.send.media.rawSendingMediaGroupsWarning
|
import dev.inmo.tgbotapi.requests.send.media.rawSendingMediaGroupsWarning
|
||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.InputMedia.*
|
import dev.inmo.tgbotapi.types.InputMedia.*
|
||||||
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSource
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||||
@ -24,7 +25,7 @@ import dev.inmo.tgbotapi.types.location.*
|
|||||||
import dev.inmo.tgbotapi.types.message.abstracts.Message
|
import dev.inmo.tgbotapi.types.message.abstracts.Message
|
||||||
import dev.inmo.tgbotapi.types.message.content.*
|
import dev.inmo.tgbotapi.types.message.content.*
|
||||||
import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent
|
import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent
|
||||||
import dev.inmo.tgbotapi.types.passport.encrypted.PassportFile
|
import dev.inmo.tgbotapi.types.message.content.media.*
|
||||||
import dev.inmo.tgbotapi.types.payments.LabeledPrice
|
import dev.inmo.tgbotapi.types.payments.LabeledPrice
|
||||||
import dev.inmo.tgbotapi.types.payments.abstracts.Currency
|
import dev.inmo.tgbotapi.types.payments.abstracts.Currency
|
||||||
import dev.inmo.tgbotapi.types.polls.*
|
import dev.inmo.tgbotapi.types.polls.*
|
||||||
@ -1061,6 +1062,14 @@ suspend fun TelegramBot.reply(
|
|||||||
allowSendingWithoutReply = allowSendingWithoutReply,
|
allowSendingWithoutReply = allowSendingWithoutReply,
|
||||||
replyMarkup = replyMarkup
|
replyMarkup = replyMarkup
|
||||||
)
|
)
|
||||||
|
is PhotoSize -> reply(
|
||||||
|
to = to,
|
||||||
|
photoSize = mediaFile,
|
||||||
|
disableNotification = disableNotification,
|
||||||
|
protectContent = protectContent,
|
||||||
|
allowSendingWithoutReply = allowSendingWithoutReply,
|
||||||
|
replyMarkup = replyMarkup
|
||||||
|
)
|
||||||
else -> reply(
|
else -> reply(
|
||||||
to = to,
|
to = to,
|
||||||
document = mediaFile.asDocumentFile(),
|
document = mediaFile.asDocumentFile(),
|
||||||
@ -1071,3 +1080,144 @@ suspend fun TelegramBot.reply(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
suspend fun TelegramBot.reply(
|
||||||
|
to: Message,
|
||||||
|
content: TextedMediaContent,
|
||||||
|
text: String?,
|
||||||
|
parseMode: ParseMode? = null,
|
||||||
|
disableNotification: Boolean = false,
|
||||||
|
protectContent: Boolean = false,
|
||||||
|
allowSendingWithoutReply: Boolean? = null,
|
||||||
|
replyMarkup: KeyboardMarkup? = null
|
||||||
|
) {
|
||||||
|
when (content) {
|
||||||
|
is VoiceContent -> reply(
|
||||||
|
to = to,
|
||||||
|
voice = content.media,
|
||||||
|
text = text,
|
||||||
|
parseMode = parseMode,
|
||||||
|
disableNotification = disableNotification,
|
||||||
|
protectContent = protectContent,
|
||||||
|
allowSendingWithoutReply = allowSendingWithoutReply,
|
||||||
|
replyMarkup = replyMarkup
|
||||||
|
)
|
||||||
|
is AudioMediaGroupContent -> reply(
|
||||||
|
to = to,
|
||||||
|
audio = content.media,
|
||||||
|
text = text,
|
||||||
|
parseMode = parseMode,
|
||||||
|
disableNotification = disableNotification,
|
||||||
|
protectContent = protectContent,
|
||||||
|
allowSendingWithoutReply = allowSendingWithoutReply,
|
||||||
|
replyMarkup = replyMarkup
|
||||||
|
)
|
||||||
|
is PhotoContent -> reply(
|
||||||
|
to = to,
|
||||||
|
photoSize = content.media,
|
||||||
|
text = text,
|
||||||
|
parseMode = parseMode,
|
||||||
|
disableNotification = disableNotification,
|
||||||
|
protectContent = protectContent,
|
||||||
|
allowSendingWithoutReply = allowSendingWithoutReply,
|
||||||
|
replyMarkup = replyMarkup
|
||||||
|
)
|
||||||
|
is VideoContent -> reply(
|
||||||
|
to = to,
|
||||||
|
video = content.media,
|
||||||
|
text = text,
|
||||||
|
parseMode = parseMode,
|
||||||
|
disableNotification = disableNotification,
|
||||||
|
protectContent = protectContent,
|
||||||
|
allowSendingWithoutReply = allowSendingWithoutReply,
|
||||||
|
replyMarkup = replyMarkup
|
||||||
|
)
|
||||||
|
is AnimationContent -> reply(
|
||||||
|
to = to,
|
||||||
|
animation = content.media,
|
||||||
|
text = text,
|
||||||
|
parseMode = parseMode,
|
||||||
|
disableNotification = disableNotification,
|
||||||
|
protectContent = protectContent,
|
||||||
|
allowSendingWithoutReply = allowSendingWithoutReply,
|
||||||
|
replyMarkup = replyMarkup
|
||||||
|
)
|
||||||
|
else -> reply(
|
||||||
|
to = to,
|
||||||
|
document = content.media.asDocumentFile(),
|
||||||
|
text = text,
|
||||||
|
parseMode = parseMode,
|
||||||
|
disableNotification = disableNotification,
|
||||||
|
protectContent = protectContent,
|
||||||
|
allowSendingWithoutReply = allowSendingWithoutReply,
|
||||||
|
replyMarkup = replyMarkup
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
suspend fun TelegramBot.reply(
|
||||||
|
to: Message,
|
||||||
|
content: TextedMediaContent,
|
||||||
|
entities: List<TextSource>,
|
||||||
|
disableNotification: Boolean = false,
|
||||||
|
protectContent: Boolean = false,
|
||||||
|
allowSendingWithoutReply: Boolean? = null,
|
||||||
|
replyMarkup: KeyboardMarkup? = null
|
||||||
|
) {
|
||||||
|
when (content) {
|
||||||
|
is VoiceContent -> reply(
|
||||||
|
to = to,
|
||||||
|
voice = content.media,
|
||||||
|
entities = entities,
|
||||||
|
disableNotification = disableNotification,
|
||||||
|
protectContent = protectContent,
|
||||||
|
allowSendingWithoutReply = allowSendingWithoutReply,
|
||||||
|
replyMarkup = replyMarkup
|
||||||
|
)
|
||||||
|
is AudioMediaGroupContent -> reply(
|
||||||
|
to = to,
|
||||||
|
audio = content.media,
|
||||||
|
entities = entities,
|
||||||
|
disableNotification = disableNotification,
|
||||||
|
protectContent = protectContent,
|
||||||
|
allowSendingWithoutReply = allowSendingWithoutReply,
|
||||||
|
replyMarkup = replyMarkup
|
||||||
|
)
|
||||||
|
is PhotoContent -> reply(
|
||||||
|
to = to,
|
||||||
|
photoSize = content.media,
|
||||||
|
entities = entities,
|
||||||
|
disableNotification = disableNotification,
|
||||||
|
protectContent = protectContent,
|
||||||
|
allowSendingWithoutReply = allowSendingWithoutReply,
|
||||||
|
replyMarkup = replyMarkup
|
||||||
|
)
|
||||||
|
is VideoContent -> reply(
|
||||||
|
to = to,
|
||||||
|
video = content.media,
|
||||||
|
entities = entities,
|
||||||
|
disableNotification = disableNotification,
|
||||||
|
protectContent = protectContent,
|
||||||
|
allowSendingWithoutReply = allowSendingWithoutReply,
|
||||||
|
replyMarkup = replyMarkup
|
||||||
|
)
|
||||||
|
is AnimationContent -> reply(
|
||||||
|
to = to,
|
||||||
|
animation = content.media,
|
||||||
|
entities = entities,
|
||||||
|
disableNotification = disableNotification,
|
||||||
|
protectContent = protectContent,
|
||||||
|
allowSendingWithoutReply = allowSendingWithoutReply,
|
||||||
|
replyMarkup = replyMarkup
|
||||||
|
)
|
||||||
|
else -> reply(
|
||||||
|
to = to,
|
||||||
|
document = content.media.asDocumentFile(),
|
||||||
|
entities = entities,
|
||||||
|
disableNotification = disableNotification,
|
||||||
|
protectContent = protectContent,
|
||||||
|
allowSendingWithoutReply = allowSendingWithoutReply,
|
||||||
|
replyMarkup = replyMarkup
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -4,6 +4,7 @@ import dev.inmo.tgbotapi.requests.abstracts.FileId
|
|||||||
import dev.inmo.tgbotapi.types.FileUniqueId
|
import dev.inmo.tgbotapi.types.FileUniqueId
|
||||||
import dev.inmo.tgbotapi.types.fileUniqueIdField
|
import dev.inmo.tgbotapi.types.fileUniqueIdField
|
||||||
import dev.inmo.tgbotapi.types.files.abstracts.*
|
import dev.inmo.tgbotapi.types.files.abstracts.*
|
||||||
|
import dev.inmo.tgbotapi.types.message.content.media.DocumentContent
|
||||||
import dev.inmo.tgbotapi.utils.MimeType
|
import dev.inmo.tgbotapi.utils.MimeType
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
@ -24,11 +25,15 @@ data class DocumentFile(
|
|||||||
) : TelegramMediaFile, MimedMediaFile, ThumbedMediaFile, CustomNamedMediaFile
|
) : TelegramMediaFile, MimedMediaFile, ThumbedMediaFile, CustomNamedMediaFile
|
||||||
|
|
||||||
@Suppress("NOTHING_TO_INLINE")
|
@Suppress("NOTHING_TO_INLINE")
|
||||||
inline fun TelegramMediaFile.asDocumentFile() = DocumentFile(
|
inline fun TelegramMediaFile.asDocumentFile() = if (this is DocumentFile) {
|
||||||
fileId,
|
this
|
||||||
fileUniqueId,
|
} else {
|
||||||
fileSize,
|
DocumentFile(
|
||||||
(this as? ThumbedMediaFile) ?.thumb,
|
fileId,
|
||||||
(this as? MimedMediaFile) ?.mimeType,
|
fileUniqueId,
|
||||||
(this as? CustomNamedMediaFile) ?.fileName
|
fileSize,
|
||||||
)
|
(this as? ThumbedMediaFile) ?.thumb,
|
||||||
|
(this as? MimedMediaFile) ?.mimeType,
|
||||||
|
(this as? CustomNamedMediaFile) ?.fileName
|
||||||
|
)
|
||||||
|
}
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
package dev.inmo.tgbotapi.types.message.content.media
|
package dev.inmo.tgbotapi.types.message.content.media
|
||||||
|
|
||||||
import dev.inmo.tgbotapi.types.InputMedia.AudioMediaGroupMemberInputMedia
|
import dev.inmo.tgbotapi.types.InputMedia.AudioMediaGroupMemberInputMedia
|
||||||
|
import dev.inmo.tgbotapi.types.files.AudioFile
|
||||||
|
import dev.inmo.tgbotapi.types.files.abstracts.TelegramMediaFile
|
||||||
|
|
||||||
interface AudioMediaGroupContent : MediaGroupContent {
|
interface AudioMediaGroupContent : MediaGroupContent {
|
||||||
|
override val media: AudioFile
|
||||||
|
|
||||||
override fun toMediaGroupMemberInputMedia(): AudioMediaGroupMemberInputMedia
|
override fun toMediaGroupMemberInputMedia(): AudioMediaGroupMemberInputMedia
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,12 @@
|
|||||||
package dev.inmo.tgbotapi.types.message.content.media
|
package dev.inmo.tgbotapi.types.message.content.media
|
||||||
|
|
||||||
import dev.inmo.tgbotapi.types.InputMedia.*
|
import dev.inmo.tgbotapi.types.InputMedia.*
|
||||||
|
import dev.inmo.tgbotapi.types.files.DocumentFile
|
||||||
|
import dev.inmo.tgbotapi.types.files.abstracts.TelegramMediaFile
|
||||||
import dev.inmo.tgbotapi.types.message.content.media.MediaGroupContent
|
import dev.inmo.tgbotapi.types.message.content.media.MediaGroupContent
|
||||||
|
|
||||||
interface DocumentMediaGroupContent : MediaGroupContent {
|
interface DocumentMediaGroupContent : MediaGroupContent {
|
||||||
|
override val media: DocumentFile
|
||||||
|
|
||||||
override fun toMediaGroupMemberInputMedia(): DocumentMediaGroupMemberInputMedia
|
override fun toMediaGroupMemberInputMedia(): DocumentMediaGroupMemberInputMedia
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user