mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2026-09-14 12:04:18 +00:00
Add Bot API 10.3 Ephemeral messages support
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -52,6 +52,8 @@ data class PromoteChatMember(
|
||||
private val canManageDirectMessages: Boolean? = null,
|
||||
@SerialName(canManageTagsField)
|
||||
private val canManageTags: Boolean? = null,
|
||||
@SerialName(canSendWelcomeMessagesField)
|
||||
private val canSendWelcomeMessages: Boolean? = null,
|
||||
) : ChatMemberRequest<Unit>, UntilDate {
|
||||
override fun method(): String = "promoteChatMember"
|
||||
override val resultDeserializer: DeserializationStrategy<Unit>
|
||||
@@ -73,6 +75,7 @@ fun PromoteChatMember(
|
||||
canManageVideoChats: Boolean? = null,
|
||||
canManageChat: Boolean? = null,
|
||||
canManageTags: Boolean? = null,
|
||||
canSendWelcomeMessages: Boolean? = null,
|
||||
) = PromoteChatMember(
|
||||
chatId = chatId,
|
||||
userId = userId,
|
||||
@@ -89,6 +92,7 @@ fun PromoteChatMember(
|
||||
canManageVideoChats = canManageVideoChats,
|
||||
canManageChat = canManageChat,
|
||||
canManageTags = canManageTags,
|
||||
canSendWelcomeMessages = canSendWelcomeMessages,
|
||||
canManageTopics = null,
|
||||
canPostStories = null,
|
||||
canEditStories = null,
|
||||
@@ -113,6 +117,7 @@ fun PromoteChannelAdministrator(
|
||||
canEditStories: Boolean? = null,
|
||||
canDeleteStories: Boolean? = null,
|
||||
canManageDirectMessages: Boolean? = null,
|
||||
canSendWelcomeMessages: Boolean? = null,
|
||||
) = PromoteChatMember(
|
||||
chatId = chatId,
|
||||
userId = userId,
|
||||
@@ -132,7 +137,8 @@ fun PromoteChannelAdministrator(
|
||||
canPostStories = canPostStories,
|
||||
canEditStories = canEditStories,
|
||||
canDeleteStories = canDeleteStories,
|
||||
canManageDirectMessages = canManageDirectMessages
|
||||
canManageDirectMessages = canManageDirectMessages,
|
||||
canSendWelcomeMessages = canSendWelcomeMessages
|
||||
)
|
||||
|
||||
fun PromoteSupergroupAdministrator(
|
||||
@@ -150,6 +156,7 @@ fun PromoteSupergroupAdministrator(
|
||||
canManageChat: Boolean? = null,
|
||||
canManageTopics: Boolean? = null,
|
||||
canManageTags: Boolean? = null,
|
||||
canSendWelcomeMessages: Boolean? = null,
|
||||
) = PromoteChatMember(
|
||||
chatId = chatId,
|
||||
userId = userId,
|
||||
@@ -167,6 +174,7 @@ fun PromoteSupergroupAdministrator(
|
||||
canManageChat = canManageChat,
|
||||
canManageTopics = canManageTopics,
|
||||
canManageTags = canManageTags,
|
||||
canSendWelcomeMessages = canSendWelcomeMessages,
|
||||
canPostStories = null,
|
||||
canEditStories = null,
|
||||
canDeleteStories = null
|
||||
|
||||
@@ -20,6 +20,7 @@ fun EditEphemeralMessageCaption(
|
||||
ephemeralMessageId: EphemeralMessageId,
|
||||
caption: String? = null,
|
||||
parseMode: ParseMode? = null,
|
||||
showCaptionAboveMedia: Boolean? = null,
|
||||
replyMarkup: InlineKeyboardMarkup? = null
|
||||
) = EditEphemeralMessageCaption(
|
||||
chatId = chatId,
|
||||
@@ -28,6 +29,7 @@ fun EditEphemeralMessageCaption(
|
||||
text = caption,
|
||||
parseMode = parseMode,
|
||||
rawEntities = null,
|
||||
showCaptionAboveMedia = showCaptionAboveMedia,
|
||||
replyMarkup = replyMarkup
|
||||
)
|
||||
|
||||
@@ -35,6 +37,7 @@ fun EditEphemeralMessageCaption(
|
||||
chatId: EphemeralChatId,
|
||||
caption: String? = null,
|
||||
parseMode: ParseMode? = null,
|
||||
showCaptionAboveMedia: Boolean? = null,
|
||||
replyMarkup: InlineKeyboardMarkup? = null
|
||||
) = EditEphemeralMessageCaption(
|
||||
chatId = chatId,
|
||||
@@ -42,6 +45,7 @@ fun EditEphemeralMessageCaption(
|
||||
ephemeralMessageId = requireNotNull(chatId.ephemeralMessageId) { "chatId ($chatId) does not carry an ephemeralMessageId" },
|
||||
caption = caption,
|
||||
parseMode = parseMode,
|
||||
showCaptionAboveMedia = showCaptionAboveMedia,
|
||||
replyMarkup = replyMarkup
|
||||
)
|
||||
|
||||
@@ -50,6 +54,7 @@ fun EditEphemeralMessageCaption(
|
||||
receiverUserId: UserId,
|
||||
ephemeralMessageId: EphemeralMessageId,
|
||||
entities: TextSourcesList,
|
||||
showCaptionAboveMedia: Boolean? = null,
|
||||
replyMarkup: InlineKeyboardMarkup? = null
|
||||
) = EditEphemeralMessageCaption(
|
||||
chatId = chatId,
|
||||
@@ -58,18 +63,21 @@ fun EditEphemeralMessageCaption(
|
||||
text = entities.makeString(),
|
||||
parseMode = null,
|
||||
rawEntities = entities.toRawMessageEntities(),
|
||||
showCaptionAboveMedia = showCaptionAboveMedia,
|
||||
replyMarkup = replyMarkup
|
||||
)
|
||||
|
||||
fun EditEphemeralMessageCaption(
|
||||
chatId: EphemeralChatId,
|
||||
entities: TextSourcesList,
|
||||
showCaptionAboveMedia: Boolean? = null,
|
||||
replyMarkup: InlineKeyboardMarkup? = null
|
||||
) = EditEphemeralMessageCaption(
|
||||
chatId = chatId,
|
||||
receiverUserId = chatId.receiverUser,
|
||||
ephemeralMessageId = requireNotNull(chatId.ephemeralMessageId) { "chatId ($chatId) does not carry an ephemeralMessageId" },
|
||||
entities = entities,
|
||||
showCaptionAboveMedia = showCaptionAboveMedia,
|
||||
replyMarkup = replyMarkup
|
||||
)
|
||||
|
||||
@@ -92,6 +100,8 @@ data class EditEphemeralMessageCaption internal constructor(
|
||||
override val parseMode: ParseMode? = null,
|
||||
@SerialName(captionEntitiesField)
|
||||
private val rawEntities: List<RawMessageEntity>? = null,
|
||||
@SerialName(showCaptionAboveMediaField)
|
||||
val showCaptionAboveMedia: Boolean? = null,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: InlineKeyboardMarkup? = null
|
||||
) : EditEphemeralMessage, EditTextChatMessage, EditReplyMessage {
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
package dev.inmo.tgbotapi.requests.edit.media
|
||||
|
||||
import dev.inmo.tgbotapi.requests.abstracts.MultipartFile
|
||||
import dev.inmo.tgbotapi.requests.abstracts.MultipartRequest
|
||||
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
|
||||
import dev.inmo.tgbotapi.requests.edit.abstracts.*
|
||||
import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.media.CoveredTelegramMedia
|
||||
import dev.inmo.tgbotapi.types.media.TelegramFreeMedia
|
||||
import dev.inmo.tgbotapi.types.media.ThumbedTelegramMedia
|
||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||
import kotlinx.serialization.*
|
||||
|
||||
@@ -26,7 +30,7 @@ data class EditEphemeralMessageMedia(
|
||||
override val media: TelegramFreeMedia,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: InlineKeyboardMarkup? = null
|
||||
) : EditEphemeralMessage, EditReplyMessage, EditMediaMessage {
|
||||
) : EditEphemeralMessage, EditReplyMessage, EditMediaMessage, MultipartRequest.Common<Unit> {
|
||||
constructor(
|
||||
chatId: EphemeralChatId,
|
||||
media: TelegramFreeMedia,
|
||||
@@ -39,10 +43,14 @@ data class EditEphemeralMessageMedia(
|
||||
replyMarkup
|
||||
)
|
||||
|
||||
init {
|
||||
require(media.file !is MultipartFile) {
|
||||
"For editing of ephemeral media messages you MUST use file id (uploading of a new file is not supported)"
|
||||
}
|
||||
override val data: SimpleRequest<Unit>
|
||||
get() = this
|
||||
override val mediaMap: Map<String, MultipartFile> by lazy {
|
||||
listOfNotNull(
|
||||
media.file as? MultipartFile,
|
||||
(media as? ThumbedTelegramMedia) ?.thumb as? MultipartFile,
|
||||
(media as? CoveredTelegramMedia) ?.cover as? MultipartFile
|
||||
).associateBy { it.fileId }
|
||||
}
|
||||
|
||||
override fun method(): String = editEphemeralMessageMediaMethod
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package dev.inmo.tgbotapi.requests.edit.text
|
||||
|
||||
import dev.inmo.tgbotapi.requests.abstracts.MultipartFile
|
||||
import dev.inmo.tgbotapi.requests.abstracts.MultipartRequest
|
||||
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
|
||||
import dev.inmo.tgbotapi.requests.edit.abstracts.*
|
||||
import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList
|
||||
@@ -9,6 +12,8 @@ import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.message.*
|
||||
import dev.inmo.tgbotapi.types.message.RawMessageEntity
|
||||
import dev.inmo.tgbotapi.types.message.toRawMessageEntities
|
||||
import dev.inmo.tgbotapi.types.rich.InputRichMessage
|
||||
import dev.inmo.tgbotapi.types.rich.multipartFiles
|
||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||
import dev.inmo.tgbotapi.utils.throwRangeError
|
||||
import kotlinx.serialization.*
|
||||
@@ -34,6 +39,36 @@ fun EditEphemeralMessageText(
|
||||
replyMarkup = replyMarkup
|
||||
)
|
||||
|
||||
fun EditEphemeralMessageRichText(
|
||||
chatId: ChatIdentifier,
|
||||
receiverUserId: UserId,
|
||||
ephemeralMessageId: EphemeralMessageId,
|
||||
richMessage: InputRichMessage,
|
||||
replyMarkup: InlineKeyboardMarkup? = null
|
||||
) = EditEphemeralMessageText(
|
||||
chatId = chatId,
|
||||
receiverUserId = receiverUserId,
|
||||
ephemeralMessageId = ephemeralMessageId,
|
||||
text = null,
|
||||
parseMode = null,
|
||||
rawEntities = null,
|
||||
linkPreviewOptions = null,
|
||||
replyMarkup = replyMarkup,
|
||||
richMessage = richMessage
|
||||
)
|
||||
|
||||
fun EditEphemeralMessageRichText(
|
||||
chatId: EphemeralChatId,
|
||||
richMessage: InputRichMessage,
|
||||
replyMarkup: InlineKeyboardMarkup? = null
|
||||
) = EditEphemeralMessageRichText(
|
||||
chatId = chatId,
|
||||
receiverUserId = chatId.receiverUser,
|
||||
ephemeralMessageId = requireNotNull(chatId.ephemeralMessageId) { "chatId ($chatId) does not carry an ephemeralMessageId" },
|
||||
richMessage = richMessage,
|
||||
replyMarkup = replyMarkup
|
||||
)
|
||||
|
||||
fun EditEphemeralMessageText(
|
||||
chatId: EphemeralChatId,
|
||||
text: String,
|
||||
@@ -96,7 +131,7 @@ data class EditEphemeralMessageText internal constructor(
|
||||
@EncodeDefault
|
||||
override val ephemeralMessageId: EphemeralMessageId,
|
||||
@SerialName(textField)
|
||||
override val text: String,
|
||||
override val text: String? = null,
|
||||
@SerialName(parseModeField)
|
||||
override val parseMode: ParseMode? = null,
|
||||
@SerialName(entitiesField)
|
||||
@@ -104,19 +139,32 @@ data class EditEphemeralMessageText internal constructor(
|
||||
@SerialName(linkPreviewOptionsField)
|
||||
override val linkPreviewOptions: LinkPreviewOptions? = null,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: InlineKeyboardMarkup? = null
|
||||
) : EditEphemeralMessage, EditTextChatMessage, EditReplyMessage, EditLinkPreviewOptionsContainer {
|
||||
override val replyMarkup: InlineKeyboardMarkup? = null,
|
||||
@SerialName(richMessageField)
|
||||
val richMessage: InputRichMessage? = null
|
||||
) : EditEphemeralMessage,
|
||||
EditTextChatMessage,
|
||||
EditReplyMessage,
|
||||
EditLinkPreviewOptionsContainer,
|
||||
MultipartRequest.Common<Unit> {
|
||||
override val textSources: TextSourcesList? by lazy {
|
||||
rawEntities ?.asTextSources(text)
|
||||
text ?.let { rawEntities ?.asTextSources(it) }
|
||||
}
|
||||
|
||||
init {
|
||||
if (text.length !in textLength) {
|
||||
throwRangeError("Text length", textLength, text.length)
|
||||
require((text == null) != (richMessage == null)) { "Exactly one of text and richMessage must be specified" }
|
||||
text ?.let {
|
||||
if (it.length !in textLength) {
|
||||
throwRangeError("Text length", textLength, it.length)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun method(): String = editEphemeralMessageTextMethod
|
||||
override val data: SimpleRequest<Unit>
|
||||
get() = this
|
||||
override val mediaMap: Map<String, MultipartFile>
|
||||
get() = richMessage ?.multipartFiles ?: emptyMap()
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
}
|
||||
|
||||
@@ -37,10 +37,8 @@ data class SendContact(
|
||||
override val directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
@SerialName(receiverUserIdField)
|
||||
override val receiverUserId: UserId? = chatId.receiverUser,
|
||||
@SerialName(callbackQueryIdField)
|
||||
override val callbackQueryId: CallbackQueryId? = null,
|
||||
@SerialName(ephemeralMessageParametersField)
|
||||
override val ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
@SerialName(disableNotificationField)
|
||||
override val disableNotification: Boolean = false,
|
||||
@SerialName(protectContentField)
|
||||
@@ -65,8 +63,7 @@ data class SendContact(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
@@ -82,8 +79,7 @@ data class SendContact(
|
||||
threadId,
|
||||
directMessageThreadId,
|
||||
businessConnectionId,
|
||||
receiverUserId,
|
||||
callbackQueryId,
|
||||
ephemeralMessageParameters,
|
||||
disableNotification,
|
||||
protectContent,
|
||||
allowPaidBroadcast,
|
||||
@@ -105,8 +101,7 @@ fun Contact.toRequest(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
@@ -120,8 +115,7 @@ fun Contact.toRequest(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
|
||||
@@ -34,8 +34,7 @@ fun SendLocation(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
@@ -50,8 +49,7 @@ fun SendLocation(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
@@ -68,8 +66,7 @@ fun SendStaticLocation(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
@@ -84,8 +81,7 @@ fun SendStaticLocation(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
@@ -97,7 +93,7 @@ fun SendStaticLocation(
|
||||
|
||||
/**
|
||||
* @param livePeriod According to Telegram Bots API, must be `0` when sending as an ephemeral message (with
|
||||
* [receiverUserId] set), as ephemeral messages do not support live location updates. Prefer [SendStaticLocation]
|
||||
* [ephemeralMessageParameters] set), as ephemeral messages do not support live location updates. Prefer [SendStaticLocation]
|
||||
* for ephemeral locations.
|
||||
*/
|
||||
fun SendLiveLocation(
|
||||
@@ -111,8 +107,7 @@ fun SendLiveLocation(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
@@ -131,8 +126,7 @@ fun SendLiveLocation(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
@@ -155,7 +149,7 @@ sealed interface SendLocation<T : LocationContent> : SendContentMessageRequest<C
|
||||
|
||||
/**
|
||||
* @property livePeriod According to Telegram Bots API, must be `0` when sending as an ephemeral message (with
|
||||
* [receiverUserId] set), as ephemeral messages do not support live location updates. Prefer [Static]
|
||||
* [ephemeralMessageParameters] set), as ephemeral messages do not support live location updates. Prefer [Static]
|
||||
* for ephemeral locations.
|
||||
*/
|
||||
@Serializable
|
||||
@@ -188,10 +182,8 @@ sealed interface SendLocation<T : LocationContent> : SendContentMessageRequest<C
|
||||
@OptIn(ExperimentalSerializationApi::class)
|
||||
@EncodeDefault
|
||||
override val businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
@SerialName(receiverUserIdField)
|
||||
override val receiverUserId: UserId? = chatId.receiverUser,
|
||||
@SerialName(callbackQueryIdField)
|
||||
override val callbackQueryId: CallbackQueryId? = null,
|
||||
@SerialName(ephemeralMessageParametersField)
|
||||
override val ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
@SerialName(disableNotificationField)
|
||||
override val disableNotification: Boolean = false,
|
||||
@SerialName(protectContentField)
|
||||
@@ -242,10 +234,8 @@ sealed interface SendLocation<T : LocationContent> : SendContentMessageRequest<C
|
||||
@OptIn(ExperimentalSerializationApi::class)
|
||||
@EncodeDefault
|
||||
override val businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
@SerialName(receiverUserIdField)
|
||||
override val receiverUserId: UserId? = chatId.receiverUser,
|
||||
@SerialName(callbackQueryIdField)
|
||||
override val callbackQueryId: CallbackQueryId? = null,
|
||||
@SerialName(ephemeralMessageParametersField)
|
||||
override val ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
@SerialName(disableNotificationField)
|
||||
override val disableNotification: Boolean = false,
|
||||
@SerialName(protectContentField)
|
||||
@@ -298,10 +288,8 @@ sealed interface SendLocation<T : LocationContent> : SendContentMessageRequest<C
|
||||
val directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
@SerialName(businessConnectionIdField)
|
||||
val businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
@SerialName(receiverUserIdField)
|
||||
val receiverUserId: UserId? = chatId.receiverUser,
|
||||
@SerialName(callbackQueryIdField)
|
||||
val callbackQueryId: CallbackQueryId? = null,
|
||||
@SerialName(ephemeralMessageParametersField)
|
||||
val ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
@SerialName(disableNotificationField)
|
||||
val disableNotification: Boolean = false,
|
||||
@SerialName(protectContentField)
|
||||
@@ -332,8 +320,7 @@ sealed interface SendLocation<T : LocationContent> : SendContentMessageRequest<C
|
||||
threadId = surrogate.threadId,
|
||||
directMessageThreadId = surrogate.directMessageThreadId,
|
||||
businessConnectionId = surrogate.businessConnectionId,
|
||||
receiverUserId = surrogate.receiverUserId,
|
||||
callbackQueryId = surrogate.callbackQueryId,
|
||||
ephemeralMessageParameters = surrogate.ephemeralMessageParameters,
|
||||
disableNotification = surrogate.disableNotification,
|
||||
protectContent = surrogate.protectContent,
|
||||
allowPaidBroadcast = surrogate.allowPaidBroadcast,
|
||||
@@ -353,8 +340,7 @@ sealed interface SendLocation<T : LocationContent> : SendContentMessageRequest<C
|
||||
threadId = surrogate.threadId,
|
||||
directMessageThreadId = surrogate.directMessageThreadId,
|
||||
businessConnectionId = surrogate.businessConnectionId,
|
||||
receiverUserId = surrogate.receiverUserId,
|
||||
callbackQueryId = surrogate.callbackQueryId,
|
||||
ephemeralMessageParameters = surrogate.ephemeralMessageParameters,
|
||||
disableNotification = surrogate.disableNotification,
|
||||
protectContent = surrogate.protectContent,
|
||||
allowPaidBroadcast = surrogate.allowPaidBroadcast,
|
||||
@@ -379,8 +365,7 @@ sealed interface SendLocation<T : LocationContent> : SendContentMessageRequest<C
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
|
||||
@@ -30,8 +30,7 @@ fun SendTextMessage(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
@@ -47,8 +46,7 @@ fun SendTextMessage(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
linkPreviewOptions = linkPreviewOptions,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
@@ -66,8 +64,7 @@ fun SendTextMessage(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
@@ -83,8 +80,7 @@ fun SendTextMessage(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
linkPreviewOptions = linkPreviewOptions,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
@@ -116,10 +112,8 @@ data class SendTextMessage internal constructor(
|
||||
override val directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
@SerialName(receiverUserIdField)
|
||||
override val receiverUserId: UserId? = chatId.receiverUser,
|
||||
@SerialName(callbackQueryIdField)
|
||||
override val callbackQueryId: CallbackQueryId? = null,
|
||||
@SerialName(ephemeralMessageParametersField)
|
||||
override val ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
@SerialName(linkPreviewOptionsField)
|
||||
override val linkPreviewOptions: LinkPreviewOptions? = null,
|
||||
@SerialName(disableNotificationField)
|
||||
|
||||
@@ -5,6 +5,7 @@ import dev.inmo.tgbotapi.requests.abstracts.MultipartRequest
|
||||
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
|
||||
import dev.inmo.tgbotapi.requests.send.abstracts.ReplyingMarkupSendMessageRequest
|
||||
import dev.inmo.tgbotapi.requests.send.abstracts.SendContentMessageRequest
|
||||
import dev.inmo.tgbotapi.requests.send.abstracts.OptionallyEphemeralSendRequest
|
||||
import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
@@ -45,6 +46,8 @@ data class SendRichMessage(
|
||||
override val directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
@SerialName(ephemeralMessageParametersField)
|
||||
override val ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
@SerialName(disableNotificationField)
|
||||
override val disableNotification: Boolean = false,
|
||||
@SerialName(protectContentField)
|
||||
@@ -61,7 +64,8 @@ data class SendRichMessage(
|
||||
override val replyMarkup: KeyboardMarkup? = null
|
||||
) : SendContentMessageRequest<ChatContentMessage<RichMessageContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ChatContentMessage<RichMessageContent>>,
|
||||
MultipartRequest.Common<ChatContentMessage<RichMessageContent>> {
|
||||
MultipartRequest.Common<ChatContentMessage<RichMessageContent>>,
|
||||
OptionallyEphemeralSendRequest {
|
||||
override fun method(): String = "sendRichMessage"
|
||||
override val resultDeserializer: DeserializationStrategy<ChatContentMessage<RichMessageContent>>
|
||||
get() = RichMessageContentMessageResultDeserializer
|
||||
|
||||
@@ -45,10 +45,8 @@ data class SendVenue(
|
||||
override val directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
@SerialName(receiverUserIdField)
|
||||
override val receiverUserId: UserId? = chatId.receiverUser,
|
||||
@SerialName(callbackQueryIdField)
|
||||
override val callbackQueryId: CallbackQueryId? = null,
|
||||
@SerialName(ephemeralMessageParametersField)
|
||||
override val ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
@SerialName(disableNotificationField)
|
||||
override val disableNotification: Boolean = false,
|
||||
@SerialName(protectContentField)
|
||||
@@ -75,8 +73,7 @@ data class SendVenue(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
@@ -97,8 +94,7 @@ data class SendVenue(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
@@ -120,8 +116,7 @@ fun Venue.toRequest(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
@@ -135,8 +130,7 @@ fun Venue.toRequest(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
package dev.inmo.tgbotapi.requests.send.abstracts
|
||||
|
||||
import dev.inmo.tgbotapi.types.CallbackQueryId
|
||||
import dev.inmo.tgbotapi.types.UserId
|
||||
import dev.inmo.tgbotapi.types.EphemeralMessageParameters
|
||||
|
||||
/**
|
||||
* Inheritors of this interface may be sent as ephemeral messages (visible only to [receiverUserId] and the bot)
|
||||
* by passing a non-null [receiverUserId]. Available for groups/supergroups only.
|
||||
* Inheritors of this interface may be sent as ephemeral messages by passing [ephemeralMessageParameters].
|
||||
* Ephemeral messages are available for groups/supergroups only.
|
||||
*/
|
||||
interface OptionallyEphemeralSendRequest {
|
||||
val receiverUserId: UserId?
|
||||
val callbackQueryId: CallbackQueryId?
|
||||
val ephemeralMessageParameters: EphemeralMessageParameters?
|
||||
}
|
||||
|
||||
@@ -38,8 +38,7 @@ fun SendAnimation(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
@@ -66,8 +65,7 @@ fun SendAnimation(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
@@ -100,8 +98,7 @@ fun SendAnimation(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
@@ -128,8 +125,7 @@ fun SendAnimation(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
@@ -187,10 +183,8 @@ data class SendAnimationData internal constructor(
|
||||
override val directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
@SerialName(receiverUserIdField)
|
||||
override val receiverUserId: UserId? = chatId.receiverUser,
|
||||
@SerialName(callbackQueryIdField)
|
||||
override val callbackQueryId: CallbackQueryId? = null,
|
||||
@SerialName(ephemeralMessageParametersField)
|
||||
override val ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
@SerialName(disableNotificationField)
|
||||
override val disableNotification: Boolean = false,
|
||||
@SerialName(protectContentField)
|
||||
|
||||
@@ -37,8 +37,7 @@ fun SendAudio(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
@@ -63,8 +62,7 @@ fun SendAudio(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
@@ -95,8 +93,7 @@ fun SendAudio(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
@@ -121,8 +118,7 @@ fun SendAudio(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
@@ -176,10 +172,8 @@ data class SendAudioData internal constructor(
|
||||
override val directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
@SerialName(receiverUserIdField)
|
||||
override val receiverUserId: UserId? = chatId.receiverUser,
|
||||
@SerialName(callbackQueryIdField)
|
||||
override val callbackQueryId: CallbackQueryId? = null,
|
||||
@SerialName(ephemeralMessageParametersField)
|
||||
override val ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
@SerialName(disableNotificationField)
|
||||
override val disableNotification: Boolean = false,
|
||||
@SerialName(protectContentField)
|
||||
|
||||
@@ -42,8 +42,7 @@ fun SendDocument(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
@@ -66,8 +65,7 @@ fun SendDocument(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
@@ -105,8 +103,7 @@ fun SendDocument(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
@@ -129,8 +126,7 @@ fun SendDocument(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
@@ -188,10 +184,8 @@ data class SendDocumentData internal constructor(
|
||||
override val directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
@SerialName(receiverUserIdField)
|
||||
override val receiverUserId: UserId? = chatId.receiverUser,
|
||||
@SerialName(callbackQueryIdField)
|
||||
override val callbackQueryId: CallbackQueryId? = null,
|
||||
@SerialName(ephemeralMessageParametersField)
|
||||
override val ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
@SerialName(disableNotificationField)
|
||||
override val disableNotification: Boolean = false,
|
||||
@SerialName(protectContentField)
|
||||
|
||||
@@ -35,8 +35,7 @@ fun SendLivePhoto(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
@@ -60,8 +59,7 @@ fun SendLivePhoto(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
@@ -91,8 +89,7 @@ fun SendLivePhoto(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
@@ -116,8 +113,7 @@ fun SendLivePhoto(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
@@ -169,10 +165,8 @@ data class SendLivePhotoData internal constructor(
|
||||
override val directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
@SerialName(receiverUserIdField)
|
||||
override val receiverUserId: UserId? = chatId.receiverUser,
|
||||
@SerialName(callbackQueryIdField)
|
||||
override val callbackQueryId: CallbackQueryId? = null,
|
||||
@SerialName(ephemeralMessageParametersField)
|
||||
override val ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
@SerialName(disableNotificationField)
|
||||
override val disableNotification: Boolean = false,
|
||||
@SerialName(protectContentField)
|
||||
|
||||
@@ -33,8 +33,7 @@ fun SendPhoto(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
@@ -54,8 +53,7 @@ fun SendPhoto(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
@@ -83,8 +81,7 @@ fun SendPhoto(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
@@ -104,8 +101,7 @@ fun SendPhoto(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
@@ -155,10 +151,8 @@ data class SendPhotoData internal constructor(
|
||||
override val directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
@SerialName(receiverUserIdField)
|
||||
override val receiverUserId: UserId? = chatId.receiverUser,
|
||||
@SerialName(callbackQueryIdField)
|
||||
override val callbackQueryId: CallbackQueryId? = null,
|
||||
@SerialName(ephemeralMessageParametersField)
|
||||
override val ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
@SerialName(disableNotificationField)
|
||||
override val disableNotification: Boolean = false,
|
||||
@SerialName(protectContentField)
|
||||
|
||||
@@ -23,8 +23,7 @@ fun SendSticker(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
emoji: String? = null,
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
@@ -39,8 +38,7 @@ fun SendSticker(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
emoji = emoji,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
@@ -79,10 +77,8 @@ data class SendStickerByFileId internal constructor(
|
||||
override val directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
@SerialName(receiverUserIdField)
|
||||
override val receiverUserId: UserId? = chatId.receiverUser,
|
||||
@SerialName(callbackQueryIdField)
|
||||
override val callbackQueryId: CallbackQueryId? = null,
|
||||
@SerialName(ephemeralMessageParametersField)
|
||||
override val ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
@SerialName(emojiField)
|
||||
val emoji: String? = null,
|
||||
@SerialName(disableNotificationField)
|
||||
|
||||
@@ -43,8 +43,7 @@ fun SendVideo(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
@@ -75,8 +74,7 @@ fun SendVideo(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
@@ -112,8 +110,7 @@ fun SendVideo(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
@@ -144,8 +141,7 @@ fun SendVideo(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
@@ -209,10 +205,8 @@ data class SendVideoData internal constructor(
|
||||
override val directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
@SerialName(receiverUserIdField)
|
||||
override val receiverUserId: UserId? = chatId.receiverUser,
|
||||
@SerialName(callbackQueryIdField)
|
||||
override val callbackQueryId: CallbackQueryId? = null,
|
||||
@SerialName(ephemeralMessageParametersField)
|
||||
override val ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
@SerialName(disableNotificationField)
|
||||
override val disableNotification: Boolean = false,
|
||||
@SerialName(protectContentField)
|
||||
|
||||
@@ -25,8 +25,7 @@ fun SendVideoNote(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
@@ -47,8 +46,7 @@ fun SendVideoNote(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
@@ -94,10 +92,8 @@ data class SendVideoNoteData internal constructor(
|
||||
override val directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
@SerialName(receiverUserIdField)
|
||||
override val receiverUserId: UserId? = chatId.receiverUser,
|
||||
@SerialName(callbackQueryIdField)
|
||||
override val callbackQueryId: CallbackQueryId? = null,
|
||||
@SerialName(ephemeralMessageParametersField)
|
||||
override val ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
@SerialName(disableNotificationField)
|
||||
override val disableNotification: Boolean = false,
|
||||
@SerialName(protectContentField)
|
||||
|
||||
@@ -31,8 +31,7 @@ fun SendVoice(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
@@ -53,8 +52,7 @@ fun SendVoice(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
@@ -81,8 +79,7 @@ fun SendVoice(
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
receiverUserId: UserId? = chatId.receiverUser,
|
||||
callbackQueryId: CallbackQueryId? = null,
|
||||
ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
duration: Long? = null,
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
@@ -104,8 +101,7 @@ fun SendVoice(
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
receiverUserId = receiverUserId,
|
||||
callbackQueryId = callbackQueryId,
|
||||
ephemeralMessageParameters = ephemeralMessageParameters,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
@@ -153,10 +149,8 @@ data class SendVoiceData internal constructor(
|
||||
override val directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
@SerialName(receiverUserIdField)
|
||||
override val receiverUserId: UserId? = chatId.receiverUser,
|
||||
@SerialName(callbackQueryIdField)
|
||||
override val callbackQueryId: CallbackQueryId? = null,
|
||||
@SerialName(ephemeralMessageParametersField)
|
||||
override val ephemeralMessageParameters: EphemeralMessageParameters? = chatId.receiverUser ?.let(::EphemeralMessageParameters),
|
||||
@SerialName(disableNotificationField)
|
||||
override val disableNotification: Boolean = false,
|
||||
@SerialName(protectContentField)
|
||||
|
||||
@@ -253,6 +253,7 @@ const val inlineMessageIdField = "inline_message_id"
|
||||
const val callbackDataField = "callback_data"
|
||||
const val callbackGameField = "callback_game"
|
||||
const val callbackQueryIdField = "callback_query_id"
|
||||
const val ephemeralMessageParametersField = "ephemeral_message_parameters"
|
||||
const val webAppQueryIdField = "web_app_query_id"
|
||||
const val inlineQueryIdField = "inline_query_id"
|
||||
const val inlineKeyboardField = "inline_keyboard"
|
||||
@@ -311,6 +312,7 @@ const val canEditStoriesField = "can_edit_stories"
|
||||
const val canDeleteStoriesField = "can_delete_stories"
|
||||
const val canManageDirectMessagesField = "can_manage_direct_messages"
|
||||
const val canManageTagsField = "can_manage_tags"
|
||||
const val canSendWelcomeMessagesField = "can_send_welcome_messages"
|
||||
const val captionEntitiesField = "caption_entities"
|
||||
const val hasSpoilerField = "has_spoiler"
|
||||
const val showCaptionAboveMediaField = "show_caption_above_media"
|
||||
@@ -761,6 +763,7 @@ const val paidMessageStarCountField = "paid_message_star_count"
|
||||
const val senderTagField = "sender_tag"
|
||||
const val receiverUserField = "receiver_user"
|
||||
const val receiverUserIdField = "receiver_user_id"
|
||||
const val replaceCallbackQueryMessageField = "replace_callback_query_message"
|
||||
const val ephemeralMessageIdField = "ephemeral_message_id"
|
||||
const val countField = "count"
|
||||
const val ratingField = "rating"
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package dev.inmo.tgbotapi.types
|
||||
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
/**
|
||||
* Parameters defining an ephemeral message recipient and optional callback-query replacement behavior.
|
||||
*/
|
||||
@Serializable
|
||||
data class EphemeralMessageParameters(
|
||||
@SerialName(receiverUserIdField)
|
||||
val receiverUserId: UserId,
|
||||
@SerialName(callbackQueryIdField)
|
||||
val callbackQueryId: CallbackQueryId? = null,
|
||||
@SerialName(replaceCallbackQueryMessageField)
|
||||
val replaceCallbackQueryMessage: Boolean? = null
|
||||
)
|
||||
@@ -50,6 +50,8 @@ data class AdministratorChatMemberImpl(
|
||||
override val canManageDirectMessages: Boolean = false,
|
||||
@SerialName(canManageTagsField)
|
||||
override val canManageTags: Boolean = false,
|
||||
@SerialName(canSendWelcomeMessagesField)
|
||||
override val canSendWelcomeMessages: Boolean = false,
|
||||
) : AdministratorChatMember {
|
||||
@SerialName(statusField)
|
||||
@Required
|
||||
|
||||
@@ -21,6 +21,7 @@ sealed interface ChatAdministratorRights : SpecialChatAdministratorRights {
|
||||
val canDeleteStories: Boolean
|
||||
val canManageDirectMessages: Boolean
|
||||
val canManageTags: Boolean
|
||||
val canSendWelcomeMessages: Boolean
|
||||
|
||||
companion object {
|
||||
operator fun invoke(
|
||||
@@ -38,7 +39,8 @@ sealed interface ChatAdministratorRights : SpecialChatAdministratorRights {
|
||||
canManageTopics: Boolean = false,
|
||||
canPostStories: Boolean = false,
|
||||
canEditStories: Boolean = false,
|
||||
canDeleteStories: Boolean = false
|
||||
canDeleteStories: Boolean = false,
|
||||
canSendWelcomeMessages: Boolean = false
|
||||
) = ChatCommonAdministratorRights(
|
||||
canChangeInfo = canChangeInfo,
|
||||
canPostMessages = canPostMessages,
|
||||
@@ -54,7 +56,8 @@ sealed interface ChatAdministratorRights : SpecialChatAdministratorRights {
|
||||
canManageTopics = canManageTopics,
|
||||
canPostStories = canPostStories,
|
||||
canEditStories = canEditStories,
|
||||
canDeleteStories = canDeleteStories
|
||||
canDeleteStories = canDeleteStories,
|
||||
canSendWelcomeMessages = canSendWelcomeMessages
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,4 +40,6 @@ data class ChatCommonAdministratorRights(
|
||||
override val canManageDirectMessages: Boolean = false,
|
||||
@SerialName(canManageTagsField)
|
||||
override val canManageTags: Boolean = false,
|
||||
@SerialName(canSendWelcomeMessagesField)
|
||||
override val canSendWelcomeMessages: Boolean = false,
|
||||
) : ChatAdministratorRights
|
||||
|
||||
@@ -50,6 +50,8 @@ data class OwnerChatMember(
|
||||
override val canManageDirectMessages: Boolean = true
|
||||
@Transient
|
||||
override val canManageTags: Boolean = true
|
||||
@Transient
|
||||
override val canSendWelcomeMessages: Boolean = true
|
||||
|
||||
@SerialName(statusField)
|
||||
@Required
|
||||
|
||||
@@ -0,0 +1,145 @@
|
||||
package dev.inmo.tgbotapi.types
|
||||
|
||||
import dev.inmo.tgbotapi.requests.send.SendTextMessage
|
||||
import dev.inmo.tgbotapi.requests.abstracts.asMultipartFile
|
||||
import dev.inmo.tgbotapi.requests.abstracts.json
|
||||
import dev.inmo.tgbotapi.requests.chat.members.PromoteChatMember
|
||||
import dev.inmo.tgbotapi.requests.edit.caption.EditEphemeralMessageCaption
|
||||
import dev.inmo.tgbotapi.requests.edit.media.EditEphemeralMessageMedia
|
||||
import dev.inmo.tgbotapi.requests.edit.text.EditEphemeralMessageRichText
|
||||
import dev.inmo.tgbotapi.requests.edit.text.EditEphemeralMessageText
|
||||
import dev.inmo.tgbotapi.types.chat.member.ChatCommonAdministratorRights
|
||||
import dev.inmo.tgbotapi.types.media.TelegramMediaPhoto
|
||||
import dev.inmo.tgbotapi.types.media.TelegramMediaVideo
|
||||
import dev.inmo.tgbotapi.types.rich.InputRichMessageHTML
|
||||
import dev.inmo.tgbotapi.types.rich.InputRichMessageMedia
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.json.jsonObject
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertFailsWith
|
||||
import kotlin.test.assertFalse
|
||||
|
||||
class EphemeralMessageParametersTest {
|
||||
private val json = Json { encodeDefaults = true }
|
||||
|
||||
@Test
|
||||
fun `SendTextMessage serializes nested ephemeral parameters without legacy fields`() {
|
||||
val request = SendTextMessage(
|
||||
chatId = ChatId(RawChatId(1L)),
|
||||
text = "text",
|
||||
ephemeralMessageParameters = EphemeralMessageParameters(
|
||||
receiverUserId = ChatId(RawChatId(2L)),
|
||||
callbackQueryId = CallbackQueryId("callback"),
|
||||
replaceCallbackQueryMessage = true
|
||||
)
|
||||
)
|
||||
val element = json.encodeToJsonElement(SendTextMessage.serializer(), request).jsonObject
|
||||
|
||||
assertEquals("2", element[ephemeralMessageParametersField]!!.jsonObject[receiverUserIdField]!!.toString())
|
||||
assertFalse(receiverUserIdField in element)
|
||||
assertFalse(callbackQueryIdField in element)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `SendTextMessage defaults ephemeral parameters from EphemeralChatId`() {
|
||||
val chatId = EphemeralChatId(
|
||||
chatId = RawChatId(1L),
|
||||
receiverUser = ChatId(RawChatId(2L))
|
||||
)
|
||||
|
||||
assertEquals(
|
||||
EphemeralMessageParameters(ChatId(RawChatId(2L))),
|
||||
SendTextMessage(chatId, "text").ephemeralMessageParameters
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `EditEphemeralMessageMedia accepts multipart files and exposes media map`() {
|
||||
val media = TelegramMediaPhoto("content".encodeToByteArray().asMultipartFile("photo.jpg"))
|
||||
val request = EditEphemeralMessageMedia(ChatId(RawChatId(1L)), ChatId(RawChatId(2L)), EphemeralMessageId(3L), media)
|
||||
|
||||
assertEquals(setOf(media.file.fileId), request.mediaMap.keys)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `EditEphemeralMessageMedia includes multipart thumbnail and cover`() {
|
||||
val video = TelegramMediaVideo(
|
||||
file = "video".encodeToByteArray().asMultipartFile("video.mp4"),
|
||||
thumb = "thumbnail".encodeToByteArray().asMultipartFile("thumbnail.jpg"),
|
||||
cover = "cover".encodeToByteArray().asMultipartFile("cover.jpg")
|
||||
)
|
||||
val request = EditEphemeralMessageMedia(ChatId(RawChatId(1L)), ChatId(RawChatId(2L)), EphemeralMessageId(3L), video)
|
||||
|
||||
assertEquals(
|
||||
setOf(video.file.fileId, requireNotNull(video.thumb).fileId, requireNotNull(video.cover).fileId),
|
||||
request.mediaMap.keys
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `EditEphemeralMessageCaption serializes show caption above media`() {
|
||||
val request = EditEphemeralMessageCaption(
|
||||
ChatId(RawChatId(1L)), ChatId(RawChatId(2L)), EphemeralMessageId(3L), "caption", showCaptionAboveMedia = true
|
||||
)
|
||||
|
||||
assertEquals("true", json.encodeToJsonElement(EditEphemeralMessageCaption.serializer(), request).jsonObject[showCaptionAboveMediaField].toString())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `EditEphemeralMessageRichText serializes rich message without text`() {
|
||||
val request = EditEphemeralMessageRichText(
|
||||
ChatId(RawChatId(1L)), ChatId(RawChatId(2L)), EphemeralMessageId(3L), InputRichMessageHTML("<b>text</b>")
|
||||
)
|
||||
val element = request.json()
|
||||
|
||||
assertFalse(textField in element)
|
||||
assertEquals("<b>text</b>", element[richMessageField]!!.jsonObject["html"].toString().removeSurrounding("\""))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `EditEphemeralMessageRichText includes rich message multipart media`() {
|
||||
val media = TelegramMediaPhoto("photo".encodeToByteArray().asMultipartFile("photo.jpg"))
|
||||
val richMessage = InputRichMessageHTML(
|
||||
html = "<a href=\"tg://photo?id=photo\">photo</a>",
|
||||
media = listOf(InputRichMessageMedia("photo", media))
|
||||
)
|
||||
val request = EditEphemeralMessageRichText(
|
||||
ChatId(RawChatId(1L)), ChatId(RawChatId(2L)), EphemeralMessageId(3L), richMessage
|
||||
)
|
||||
|
||||
assertEquals(setOf(media.file.fileId), request.mediaMap.keys)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `EditEphemeralMessageText rejects absent text and rich message`() {
|
||||
assertFailsWith<IllegalArgumentException> {
|
||||
EditEphemeralMessageText(
|
||||
ChatId(RawChatId(1L)), ChatId(RawChatId(2L)), EphemeralMessageId(3L),
|
||||
null, null, null, null, null, null
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `ChatCommonAdministratorRights serializes welcome message right`() {
|
||||
val element = json.encodeToJsonElement(
|
||||
ChatCommonAdministratorRights.serializer(),
|
||||
ChatCommonAdministratorRights(canSendWelcomeMessages = true)
|
||||
).jsonObject
|
||||
|
||||
assertEquals("true", element[canSendWelcomeMessagesField].toString())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `PromoteChatMember serializes welcome message right`() {
|
||||
val request = PromoteChatMember(
|
||||
chatId = ChatId(RawChatId(1L)),
|
||||
userId = ChatId(RawChatId(2L)),
|
||||
canSendWelcomeMessages = true
|
||||
)
|
||||
val element = json.encodeToJsonElement(PromoteChatMember.serializer(), request).jsonObject
|
||||
|
||||
assertEquals("true", element[canSendWelcomeMessagesField].toString())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user