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,
|
override val fromOffline: Boolean,
|
||||||
@SerialName(paidMessageStarCountField)
|
@SerialName(paidMessageStarCountField)
|
||||||
override val cost: Int? = null,
|
override val cost: Int? = null,
|
||||||
|
) : ChannelContentMessage<T> {
|
||||||
@SerialName(isPaidPostField)
|
@SerialName(isPaidPostField)
|
||||||
override val isPaidPost: Boolean = false
|
override val isPaidPost: Boolean = false
|
||||||
) : ChannelContentMessage<T> {
|
|
||||||
constructor(
|
constructor(
|
||||||
messageId: MessageId,
|
messageId: MessageId,
|
||||||
chat: PreviewChannelChat,
|
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,24 +400,43 @@ internal data class RawMessage(
|
|||||||
}
|
}
|
||||||
when (chat) {
|
when (chat) {
|
||||||
is PreviewPublicChat -> when (chat) {
|
is PreviewPublicChat -> when (chat) {
|
||||||
is PreviewChannelChat -> ChannelContentMessageImpl(
|
is PreviewChannelChat -> if (is_paid_post) {
|
||||||
messageId = messageId,
|
ChannelContentMessageImpl(
|
||||||
chat = chat,
|
messageId = messageId,
|
||||||
senderChat = checkedFrom ?: sender_chat ?: chat,
|
chat = chat,
|
||||||
content = content,
|
senderChat = checkedFrom ?: sender_chat ?: chat,
|
||||||
date = date.asDate,
|
content = content,
|
||||||
editDate = edit_date?.asDate,
|
date = date.asDate,
|
||||||
hasProtectedContent = has_protected_content == true,
|
editDate = edit_date?.asDate,
|
||||||
forwardOrigin = forward_origin,
|
hasProtectedContent = has_protected_content == true,
|
||||||
replyInfo = replyInfo,
|
forwardOrigin = forward_origin,
|
||||||
replyMarkup = reply_markup,
|
replyInfo = replyInfo,
|
||||||
senderBot = via_bot,
|
replyMarkup = reply_markup,
|
||||||
authorSignature = author_signature,
|
senderBot = via_bot,
|
||||||
mediaGroupId = media_group_id,
|
authorSignature = author_signature,
|
||||||
fromOffline = is_from_offline,
|
mediaGroupId = media_group_id,
|
||||||
cost = paid_star_count,
|
fromOffline = is_from_offline,
|
||||||
isPaidPost = is_paid_post,
|
cost = paid_star_count,
|
||||||
)
|
)
|
||||||
|
} 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 PreviewForumChat -> when(chat) {
|
||||||
is PreviewChannelDirectMessagesChat -> {
|
is PreviewChannelDirectMessagesChat -> {
|
||||||
if (messageThreadId != null) {
|
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<*>.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> 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<*>.withContent() = if (content is T) { this as PrivateContentMessage<T> } else { null }
|
||||||
inline fun <reified T : MessageContent> PrivateContentMessage<*>.requireWithContent() = withContent<T>()!!
|
inline fun <reified T : MessageContent> PrivateContentMessage<*>.requireWithContent() = withContent<T>()!!
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user