mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2025-12-14 18:25:44 +00:00
Partially add DirectMessagesTopic
This commit is contained in:
@@ -524,6 +524,7 @@ const val creatorField = "creator"
|
||||
const val subscriptionPeriodField = "subscription_period"
|
||||
const val subscriptionPriceField = "subscription_price"
|
||||
const val copyTextField = "copy_text"
|
||||
const val topicIdField = "topic_id"
|
||||
|
||||
const val isPublicField = "is_public"
|
||||
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package dev.inmo.tgbotapi.types.chat
|
||||
|
||||
import dev.inmo.tgbotapi.abstracts.OptionallyWithUser
|
||||
import dev.inmo.tgbotapi.types.MessageThreadId
|
||||
import dev.inmo.tgbotapi.types.topicIdField
|
||||
import dev.inmo.tgbotapi.types.userField
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
data class DirectMessagesTopic(
|
||||
@SerialName(topicIdField)
|
||||
val threadId: MessageThreadId,
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@SerialName(userField)
|
||||
override val user: PreviewUser? = null,
|
||||
) : OptionallyWithUser
|
||||
@@ -13,6 +13,7 @@ import kotlinx.serialization.Serializable
|
||||
data class SuggestedPostApprovalFailed(
|
||||
@SerialName(priceField) // TODO::Test that this field will never be null
|
||||
val price: SuggestedPostPrice,
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@SerialName(suggestedPostMessageField)
|
||||
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class)
|
||||
val suggestedPostMessage: ChannelDirectMessagesContentMessage<*>? = null,
|
||||
|
||||
@@ -15,6 +15,7 @@ import kotlinx.serialization.Serializable
|
||||
data class SuggestedPostApproved(
|
||||
@SerialName(sendDateField)
|
||||
val sendDate: TelegramDate,
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@SerialName(suggestedPostMessageField)
|
||||
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class)
|
||||
val suggestedPostMessage: ChannelDirectMessagesContentMessage<*>? = null,
|
||||
|
||||
@@ -10,6 +10,7 @@ import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
data class SuggestedPostDeclined(
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@SerialName(suggestedPostMessageField)
|
||||
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class)
|
||||
val suggestedPostMessage: ChannelDirectMessagesContentMessage<*>? = null,
|
||||
|
||||
@@ -30,12 +30,14 @@ sealed interface SuggestedPostPaid : Currencied, ChannelDirectMessagesEvent {
|
||||
data class XTR(
|
||||
@SerialName(starAmountField)
|
||||
override val starAmount: StarAmount,
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@SerialName(suggestedPostMessageField)
|
||||
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class)
|
||||
override val suggestedPostMessage: ChannelDirectMessagesContentMessage<*>? = null,
|
||||
) : SuggestedPostPaid {
|
||||
override val amount: Long?
|
||||
get() = null
|
||||
@Suppress("OPT_IN_USAGE")
|
||||
@EncodeDefault
|
||||
override val currency: Currency = Currency.XTR
|
||||
}
|
||||
@@ -43,12 +45,14 @@ sealed interface SuggestedPostPaid : Currencied, ChannelDirectMessagesEvent {
|
||||
data class TON(
|
||||
@SerialName(amountField)
|
||||
override val amount: Long,
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@SerialName(suggestedPostMessageField)
|
||||
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class)
|
||||
override val suggestedPostMessage: ChannelDirectMessagesContentMessage<*>? = null
|
||||
) : SuggestedPostPaid {
|
||||
override val starAmount: StarAmount?
|
||||
get() = null
|
||||
@Suppress("OPT_IN_USAGE")
|
||||
@EncodeDefault
|
||||
override val currency: Currency = Currency.TON
|
||||
}
|
||||
@@ -56,6 +60,7 @@ sealed interface SuggestedPostPaid : Currencied, ChannelDirectMessagesEvent {
|
||||
data class Other(
|
||||
@SerialName(currencyField)
|
||||
override val currency: Currency,
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@SerialName(suggestedPostMessageField)
|
||||
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class)
|
||||
override val suggestedPostMessage: ChannelDirectMessagesContentMessage<*>? = null,
|
||||
|
||||
@@ -12,6 +12,7 @@ import kotlinx.serialization.Serializable
|
||||
data class SuggestedPostRefunded(
|
||||
@SerialName(reasonField)
|
||||
val reason: String,
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@SerialName(suggestedPostMessageField)
|
||||
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class)
|
||||
val suggestedPostMessage: ChannelDirectMessagesContentMessage<*>? = null
|
||||
|
||||
@@ -282,6 +282,7 @@ data class FromChannelChannelDirectMessagesContentMessageImpl<T: MessageContent>
|
||||
override val messageId: MessageId,
|
||||
override val threadId: MessageThreadId,
|
||||
override val date: DateTime,
|
||||
override val directMessageTopic: DirectMessagesTopic,
|
||||
override val forwardOrigin: MessageOrigin?,
|
||||
override val editDate: DateTime?,
|
||||
override val hasProtectedContent: Boolean,
|
||||
@@ -301,6 +302,7 @@ data class FromChannelChannelDirectMessagesContentMessageImpl<T: MessageContent>
|
||||
messageId: MessageId,
|
||||
threadId: MessageThreadId,
|
||||
date: DateTime,
|
||||
directMessageTopic: DirectMessagesTopic,
|
||||
forwardInfo: ForwardInfo,
|
||||
editDate: DateTime?,
|
||||
hasProtectedContent: Boolean,
|
||||
@@ -318,6 +320,7 @@ data class FromChannelChannelDirectMessagesContentMessageImpl<T: MessageContent>
|
||||
messageId = messageId,
|
||||
threadId = threadId,
|
||||
date = date,
|
||||
directMessageTopic = directMessageTopic,
|
||||
forwardOrigin = forwardInfo.messageOrigin(),
|
||||
editDate = editDate,
|
||||
hasProtectedContent = hasProtectedContent,
|
||||
@@ -448,6 +451,7 @@ data class CommonChannelDirectMessagesContentMessageImpl<T : MessageContent>(
|
||||
override val threadId: MessageThreadId,
|
||||
override val from: User,
|
||||
override val date: DateTime,
|
||||
override val directMessageTopic: DirectMessagesTopic,
|
||||
override val forwardOrigin: MessageOrigin?,
|
||||
override val editDate: DateTime?,
|
||||
override val hasProtectedContent: Boolean,
|
||||
@@ -467,6 +471,7 @@ data class CommonChannelDirectMessagesContentMessageImpl<T : MessageContent>(
|
||||
threadId: MessageThreadId,
|
||||
from: User,
|
||||
date: DateTime,
|
||||
directMessageTopic: DirectMessagesTopic,
|
||||
forwardInfo: ForwardInfo,
|
||||
editDate: DateTime?,
|
||||
hasProtectedContent: Boolean,
|
||||
@@ -484,6 +489,7 @@ data class CommonChannelDirectMessagesContentMessageImpl<T : MessageContent>(
|
||||
threadId = threadId,
|
||||
from = from,
|
||||
date = date,
|
||||
directMessageTopic = directMessageTopic,
|
||||
forwardOrigin = forwardInfo.messageOrigin(),
|
||||
editDate = editDate,
|
||||
hasProtectedContent = hasProtectedContent,
|
||||
|
||||
@@ -62,6 +62,7 @@ internal data class RawMessage(
|
||||
private val chat: PreviewChat,
|
||||
@SerialName(messageThreadIdField)
|
||||
private val messageThreadId: MessageThreadId? = null,
|
||||
private val direct_messages_topic: DirectMessagesTopic? = null,
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
private val from: PreviewUser? = null,
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@@ -417,6 +418,7 @@ internal data class RawMessage(
|
||||
)
|
||||
is PreviewForumChat -> when(chat) {
|
||||
is PreviewChannelDirectMessagesChat -> {
|
||||
val messageThreadId = direct_messages_topic ?.threadId ?: messageThreadId
|
||||
if (messageThreadId != null) {
|
||||
val chatId = ChatIdWithThreadId(
|
||||
chat.id.chatId,
|
||||
@@ -432,6 +434,7 @@ internal data class RawMessage(
|
||||
messageId = messageId,
|
||||
threadId = messageThreadId,
|
||||
date = date.asDate,
|
||||
directMessageTopic = direct_messages_topic ?: error("direct_messages_topic must be presented for FromChannelChannelDirectMessagesContentMessage"),
|
||||
forwardOrigin = forward_origin,
|
||||
editDate = edit_date ?.asDate,
|
||||
hasProtectedContent = has_protected_content == true,
|
||||
@@ -451,6 +454,7 @@ internal data class RawMessage(
|
||||
threadId = messageThreadId,
|
||||
from = checkedFrom ?: from ?: error("It is expected that in direct channel messages from non anonymous channels user must be specified"),
|
||||
date = date.asDate,
|
||||
directMessageTopic = direct_messages_topic ?: error("direct_messages_topic must be presented for CommonChannelDirectMessagesContentMessage"),
|
||||
forwardOrigin = forward_origin,
|
||||
editDate = edit_date ?.asDate,
|
||||
hasProtectedContent = has_protected_content == true,
|
||||
|
||||
@@ -24,6 +24,7 @@ sealed interface ForumContentMessage<T : MessageContent> : GroupContentMessage<T
|
||||
|
||||
sealed interface ChannelDirectMessagesContentMessage<T : MessageContent> : ForumContentMessage<T>, PossiblyTopicMessage {
|
||||
override val chat: PreviewChannelDirectMessagesChat
|
||||
val directMessageTopic: DirectMessagesTopic
|
||||
}
|
||||
|
||||
sealed interface FromChannelGroupContentMessage<T : MessageContent> : GroupContentMessage<T>, SignedMessage, WithSenderChatMessage {
|
||||
|
||||
@@ -175,6 +175,7 @@ fun <T : MediaGroupPartContent> List<PossiblySentViaBotCommonMessage<T>>.asMedia
|
||||
threadId = sourceMessage.threadId,
|
||||
from = sourceMessage.user,
|
||||
date = sourceMessage.date,
|
||||
directMessageTopic = sourceMessage.directMessageTopic,
|
||||
forwardOrigin = sourceMessage.forwardOrigin,
|
||||
editDate = sourceMessage.editDate,
|
||||
hasProtectedContent = sourceMessage.hasProtectedContent,
|
||||
@@ -212,6 +213,7 @@ fun <T : MediaGroupPartContent> List<PossiblySentViaBotCommonMessage<T>>.asMedia
|
||||
messageId = sourceMessage.messageId,
|
||||
threadId = sourceMessage.threadId,
|
||||
date = sourceMessage.date,
|
||||
directMessageTopic = sourceMessage.directMessageTopic,
|
||||
forwardOrigin = sourceMessage.forwardOrigin,
|
||||
editDate = sourceMessage.editDate,
|
||||
hasProtectedContent = sourceMessage.hasProtectedContent,
|
||||
|
||||
Reference in New Issue
Block a user