mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2025-09-16 05:40:32 +00:00
add support of is_paid_post field
This commit is contained in:
@@ -28,9 +28,9 @@ data class ChannelContentMessageImpl<T: MessageContent>(
|
||||
override val fromOffline: Boolean,
|
||||
@SerialName(paidMessageStarCountField)
|
||||
override val cost: Int? = null,
|
||||
) : ChannelContentMessage<T> {
|
||||
@SerialName(isPaidPostField)
|
||||
override val isPaidPost: Boolean = false
|
||||
) : ChannelContentMessage<T> {
|
||||
constructor(
|
||||
messageId: MessageId,
|
||||
chat: PreviewChannelChat,
|
||||
|
@@ -0,0 +1,54 @@
|
||||
package dev.inmo.tgbotapi.types.message
|
||||
|
||||
import korlibs.time.DateTime
|
||||
import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.chat.CommonBot
|
||||
import dev.inmo.tgbotapi.types.chat.PreviewChannelChat
|
||||
import dev.inmo.tgbotapi.types.chat.PreviewChat
|
||||
import dev.inmo.tgbotapi.types.chat.User
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.*
|
||||
import dev.inmo.tgbotapi.types.message.content.MessageContent
|
||||
import kotlinx.serialization.EncodeDefault
|
||||
import kotlinx.serialization.SerialName
|
||||
|
||||
data class ChannelPaidPostImpl<T: MessageContent>(
|
||||
override val messageId: MessageId,
|
||||
override val chat: PreviewChannelChat,
|
||||
override val senderChat: PreviewChat,
|
||||
override val content: T,
|
||||
override val date: DateTime,
|
||||
override val editDate: DateTime?,
|
||||
override val hasProtectedContent: Boolean,
|
||||
override val forwardOrigin: MessageOrigin?,
|
||||
override val replyInfo: ReplyInfo?,
|
||||
override val replyMarkup: InlineKeyboardMarkup?,
|
||||
override val senderBot: CommonBot?,
|
||||
override val authorSignature: AuthorSignature?,
|
||||
override val mediaGroupId: MediaGroupId?,
|
||||
override val fromOffline: Boolean,
|
||||
@SerialName(paidMessageStarCountField)
|
||||
override val cost: Int? = null,
|
||||
) : ChannelPaidPost<T> {
|
||||
@SerialName(isPaidPostField)
|
||||
@EncodeDefault
|
||||
override val isPaidPost: Boolean = true
|
||||
constructor(
|
||||
messageId: MessageId,
|
||||
chat: PreviewChannelChat,
|
||||
senderChat: PreviewChat,
|
||||
content: T,
|
||||
date: DateTime,
|
||||
editDate: DateTime?,
|
||||
hasProtectedContent: Boolean,
|
||||
forwardInfo: ForwardInfo,
|
||||
replyTo: AccessibleMessage?,
|
||||
replyMarkup: InlineKeyboardMarkup?,
|
||||
senderBot: CommonBot?,
|
||||
authorSignature: AuthorSignature?,
|
||||
mediaGroupId: MediaGroupId?,
|
||||
fromOffline: Boolean,
|
||||
) : this(
|
||||
messageId, chat, senderChat, content, date, editDate, hasProtectedContent, forwardInfo.messageOrigin(), replyTo ?.let { ReplyInfo.Internal(it) }, replyMarkup, senderBot, authorSignature, mediaGroupId, fromOffline
|
||||
)
|
||||
}
|
@@ -400,7 +400,8 @@ internal data class RawMessage(
|
||||
}
|
||||
when (chat) {
|
||||
is PreviewPublicChat -> when (chat) {
|
||||
is PreviewChannelChat -> ChannelContentMessageImpl(
|
||||
is PreviewChannelChat -> if (is_paid_post) {
|
||||
ChannelContentMessageImpl(
|
||||
messageId = messageId,
|
||||
chat = chat,
|
||||
senderChat = checkedFrom ?: sender_chat ?: chat,
|
||||
@@ -416,8 +417,26 @@ internal data class RawMessage(
|
||||
mediaGroupId = media_group_id,
|
||||
fromOffline = is_from_offline,
|
||||
cost = paid_star_count,
|
||||
isPaidPost = is_paid_post,
|
||||
)
|
||||
} else {
|
||||
ChannelPaidPostImpl(
|
||||
messageId = messageId,
|
||||
chat = chat,
|
||||
senderChat = checkedFrom ?: sender_chat ?: chat,
|
||||
content = content,
|
||||
date = date.asDate,
|
||||
editDate = edit_date?.asDate,
|
||||
hasProtectedContent = has_protected_content == true,
|
||||
forwardOrigin = forward_origin,
|
||||
replyInfo = replyInfo,
|
||||
replyMarkup = reply_markup,
|
||||
senderBot = via_bot,
|
||||
authorSignature = author_signature,
|
||||
mediaGroupId = media_group_id,
|
||||
fromOffline = is_from_offline,
|
||||
cost = paid_star_count,
|
||||
)
|
||||
}
|
||||
is PreviewForumChat -> when(chat) {
|
||||
is PreviewChannelDirectMessagesChat -> {
|
||||
if (messageThreadId != null) {
|
||||
|
@@ -0,0 +1,8 @@
|
||||
package dev.inmo.tgbotapi.types.message.abstracts
|
||||
|
||||
import dev.inmo.tgbotapi.types.message.content.MessageContent
|
||||
|
||||
interface ChannelPaidPost<T: MessageContent> : ChannelContentMessage<T> {
|
||||
override val isPaidPost: Boolean
|
||||
get() = true
|
||||
}
|
@@ -20,6 +20,9 @@ inline fun <reified T : MessageContent> PossiblySentViaBotCommonMessage<*>.requi
|
||||
inline fun <reified T : MessageContent> ChannelContentMessage<*>.withContent() = if (content is T) { this as ChannelContentMessage<T> } else { null }
|
||||
inline fun <reified T : MessageContent> ChannelContentMessage<*>.requireWithContent() = withContent<T>()!!
|
||||
|
||||
inline fun <reified T : MessageContent> ChannelPaidPost<*>.withContent() = if (content is T) { this as ChannelPaidPost<T> } else { null }
|
||||
inline fun <reified T : MessageContent> ChannelPaidPost<*>.requireWithContent() = withContent<T>()!!
|
||||
|
||||
inline fun <reified T : MessageContent> PrivateContentMessage<*>.withContent() = if (content is T) { this as PrivateContentMessage<T> } else { null }
|
||||
inline fun <reified T : MessageContent> PrivateContentMessage<*>.requireWithContent() = withContent<T>()!!
|
||||
|
||||
|
Reference in New Issue
Block a user