1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2025-12-15 18:55:44 +00:00

fixes of inheritance of messages for direct ones

This commit is contained in:
2025-09-17 22:46:51 +06:00
parent 719fb1f4a9
commit 03d23a938e
5 changed files with 78 additions and 68 deletions

View File

@@ -280,7 +280,6 @@ data class FromChannelChannelDirectMessagesContentMessageImpl<T: MessageContent>
override val chat: PreviewChannelDirectMessagesChat,
override val channel: PreviewChannelChat,
override val messageId: MessageId,
override val threadId: MessageThreadId,
override val date: DateTime,
override val directMessageTopic: DirectMessagesTopic,
override val forwardOrigin: MessageOrigin?,
@@ -300,7 +299,6 @@ data class FromChannelChannelDirectMessagesContentMessageImpl<T: MessageContent>
chat: PreviewChannelDirectMessagesChat,
channel: PreviewChannelChat,
messageId: MessageId,
threadId: MessageThreadId,
date: DateTime,
directMessageTopic: DirectMessagesTopic,
forwardInfo: ForwardInfo,
@@ -318,7 +316,6 @@ data class FromChannelChannelDirectMessagesContentMessageImpl<T: MessageContent>
chat = chat,
channel = channel,
messageId = messageId,
threadId = threadId,
date = date,
directMessageTopic = directMessageTopic,
forwardOrigin = forwardInfo.messageOrigin(),
@@ -448,7 +445,6 @@ data class CommonForumContentMessageImpl<T : MessageContent>(
data class CommonChannelDirectMessagesContentMessageImpl<T : MessageContent>(
override val chat: PreviewChannelDirectMessagesChat,
override val messageId: MessageId,
override val threadId: MessageThreadId,
override val from: User,
override val date: DateTime,
override val directMessageTopic: DirectMessagesTopic,
@@ -468,7 +464,6 @@ data class CommonChannelDirectMessagesContentMessageImpl<T : MessageContent>(
constructor(
chat: PreviewChannelDirectMessagesChat,
messageId: MessageId,
threadId: MessageThreadId,
from: User,
date: DateTime,
directMessageTopic: DirectMessagesTopic,
@@ -486,7 +481,6 @@ data class CommonChannelDirectMessagesContentMessageImpl<T : MessageContent>(
) : this(
chat = chat,
messageId = messageId,
threadId = threadId,
from = from,
date = date,
directMessageTopic = directMessageTopic,

View File

@@ -452,7 +452,6 @@ internal data class RawMessage(
chat = actualForumChat,
channel = sender_chat,
messageId = messageId,
threadId = messageThreadId,
date = date.asDate,
directMessageTopic = direct_messages_topic ?: error("direct_messages_topic must be presented for FromChannelChannelDirectMessagesContentMessage"),
forwardOrigin = forward_origin,
@@ -471,7 +470,6 @@ internal data class RawMessage(
null -> CommonChannelDirectMessagesContentMessageImpl(
chat = actualForumChat,
messageId = messageId,
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"),
@@ -490,8 +488,8 @@ internal data class RawMessage(
}
} else {
when (sender_chat) {
is PreviewChannelChat -> if (is_automatic_forward == true) {
ConnectedFromChannelGroupContentMessageImpl(
is PreviewChannelChat -> when {
is_automatic_forward == true -> ConnectedFromChannelGroupContentMessageImpl(
chat = chat,
channel = sender_chat,
messageId = messageId,
@@ -508,8 +506,32 @@ internal data class RawMessage(
fromOffline = is_from_offline,
cost = paid_star_count,
)
} else {
UnconnectedFromChannelGroupContentMessageImpl(
direct_messages_topic != null -> CommonChannelDirectMessagesContentMessageImpl(
chat = when (chat) {
is ChannelDirectMessagesChatImpl -> chat.copy(
id = ChatIdWithChannelDirectMessageThreadId(
chat.id.chatId,
direct_messages_topic.threadId
)
)
},
messageId = messageId,
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,
replyInfo = replyInfo,
replyMarkup = reply_markup,
content = content,
senderBot = via_bot,
mediaGroupId = media_group_id,
senderBoostsCount = sender_boost_count,
fromOffline = is_from_offline,
cost = paid_star_count,
)
else -> UnconnectedFromChannelGroupContentMessageImpl(
chat = chat,
channel = sender_chat,
messageId = messageId,

View File

@@ -1,6 +1,7 @@
package dev.inmo.tgbotapi.types.message.abstracts
import dev.inmo.tgbotapi.requests.chat.forum.CreateForumTopic
import dev.inmo.tgbotapi.types.DirectMessageThreadId
import dev.inmo.tgbotapi.types.MessageThreadId
import dev.inmo.tgbotapi.types.chat.*
import dev.inmo.tgbotapi.types.message.ChatEvents.forum.ForumTopicCreated
@@ -22,9 +23,11 @@ sealed interface ForumContentMessage<T : MessageContent> : GroupContentMessage<T
get() = (replyTo as? ChatEventMessage<*>) ?.chatEvent as? ForumTopicCreated
}
sealed interface ChannelDirectMessagesContentMessage<T : MessageContent> : ForumContentMessage<T>, PossiblyTopicMessage {
sealed interface ChannelDirectMessagesContentMessage<T : MessageContent> : GroupContentMessage<T> {
override val chat: PreviewChannelDirectMessagesChat
val directMessageTopic: DirectMessagesTopic
val directMessageThreadId: DirectMessageThreadId
get() = directMessageTopic.threadId
}
sealed interface FromChannelGroupContentMessage<T : MessageContent> : GroupContentMessage<T>, SignedMessage, WithSenderChatMessage {

View File

@@ -172,7 +172,6 @@ fun <T : MediaGroupPartContent> List<PossiblySentViaBotCommonMessage<T>>.asMedia
is CommonChannelDirectMessagesContentMessage -> CommonChannelDirectMessagesContentMessageImpl(
chat = sourceMessage.chat,
messageId = sourceMessage.messageId,
threadId = sourceMessage.threadId,
from = sourceMessage.user,
date = sourceMessage.date,
directMessageTopic = sourceMessage.directMessageTopic,
@@ -211,7 +210,6 @@ fun <T : MediaGroupPartContent> List<PossiblySentViaBotCommonMessage<T>>.asMedia
chat = sourceMessage.chat,
channel = sourceMessage.channel,
messageId = sourceMessage.messageId,
threadId = sourceMessage.threadId,
date = sourceMessage.date,
directMessageTopic = sourceMessage.directMessageTopic,
forwardOrigin = sourceMessage.forwardOrigin,