1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2026-06-18 09:15:10 +00:00

guest message answers rework

This commit is contained in:
2026-05-30 12:49:54 +06:00
parent fdd21f3cbd
commit 1f2b3b9464
18 changed files with 166 additions and 266 deletions

View File

@@ -1,33 +0,0 @@
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.PreviewChat
import dev.inmo.tgbotapi.types.chat.User
import dev.inmo.tgbotapi.types.message.abstracts.AnswerGuestContentMessage
import dev.inmo.tgbotapi.types.message.abstracts.GuestContentMessage
import dev.inmo.tgbotapi.types.message.abstracts.RequestGuestContentMessage
import dev.inmo.tgbotapi.types.message.content.MessageContent
import kotlinx.serialization.SerialName
data class AnswerGuestContentMessageImpl<T: MessageContent>(
override val messageId: MessageId,
override val from: User,
override val chat: 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 mediaGroupId: MediaGroupId?,
override val guestBotCallerUser: User,
override val guestBotCallerChat: PreviewChat,
override val fromOffline: Boolean,
@SerialName(paidMessageStarCountField)
override val cost: Int? = null,
) : AnswerGuestContentMessage<T>

View File

@@ -180,6 +180,8 @@ data class CommonGroupContentMessageImpl<T : MessageContent>(
override val replyMarkup: InlineKeyboardMarkup?,
override val content: T,
override val senderBot: CommonBot?,
override val guestBotCallerUser: User?,
override val guestBotCallerChat: PreviewChat?,
override val mediaGroupId: MediaGroupId?,
override val senderBoostsCount: Int?,
override val fromOffline: Boolean,
@@ -200,6 +202,8 @@ data class CommonGroupContentMessageImpl<T : MessageContent>(
replyMarkup: InlineKeyboardMarkup?,
content: T,
senderBot: CommonBot?,
guestBotCallerUser: User?,
guestBotCallerChat: PreviewChat?,
mediaGroupId: MediaGroupId?,
senderBoostsCount: Int?,
fromOffline: Boolean,
@@ -216,6 +220,8 @@ data class CommonGroupContentMessageImpl<T : MessageContent>(
replyMarkup = replyMarkup,
content = content,
senderBot = senderBot,
guestBotCallerUser = guestBotCallerUser,
guestBotCallerChat = guestBotCallerChat,
mediaGroupId = mediaGroupId,
senderBoostsCount = senderBoostsCount,
fromOffline = fromOffline,
@@ -460,6 +466,8 @@ data class CommonForumContentMessageImpl<T : MessageContent>(
override val replyMarkup: InlineKeyboardMarkup?,
override val content: T,
override val senderBot: CommonBot?,
override val guestBotCallerUser: User?,
override val guestBotCallerChat: PreviewChat?,
override val mediaGroupId: MediaGroupId?,
override val senderBoostsCount: Int?,
override val fromOffline: Boolean,
@@ -481,6 +489,8 @@ data class CommonForumContentMessageImpl<T : MessageContent>(
replyMarkup: InlineKeyboardMarkup?,
content: T,
senderBot: CommonBot?,
guestBotCallerUser: User?,
guestBotCallerChat: PreviewChat?,
mediaGroupId: MediaGroupId?,
senderBoostsCount: Int?,
fromOffline: Boolean,
@@ -498,6 +508,8 @@ data class CommonForumContentMessageImpl<T : MessageContent>(
replyMarkup = replyMarkup,
content = content,
senderBot = senderBot,
guestBotCallerUser = guestBotCallerUser,
guestBotCallerChat = guestBotCallerChat,
mediaGroupId = mediaGroupId,
senderBoostsCount = senderBoostsCount,
fromOffline = fromOffline,

View File

@@ -23,6 +23,8 @@ data class PrivateContentMessageImpl<T: MessageContent>(
override val replyInfo: ReplyInfo?,
override val replyMarkup: InlineKeyboardMarkup?,
override val senderBot: CommonBot?,
override val guestBotCallerUser: User?,
override val guestBotCallerChat: PreviewChat?,
override val mediaGroupId: MediaGroupId?,
override val fromOffline: Boolean,
override val effectId: EffectId?,
@@ -41,10 +43,27 @@ data class PrivateContentMessageImpl<T: MessageContent>(
replyTo: AccessibleMessage?,
replyMarkup: InlineKeyboardMarkup?,
senderBot: CommonBot?,
guestBotCallerUser: User?,
guestBotCallerChat: PreviewChat?,
mediaGroupId: MediaGroupId?,
fromOffline: Boolean,
effectId: EffectId,
) : this(
messageId, from, chat, content, date, editDate, hasProtectedContent, forwardInfo.messageOrigin(), replyTo ?.let { ReplyInfo.Internal(it) }, replyMarkup, senderBot, mediaGroupId, fromOffline, effectId
messageId = messageId,
from = from,
chat = chat,
content = content,
date = date,
editDate = editDate,
hasProtectedContent = hasProtectedContent,
forwardOrigin = forwardInfo.messageOrigin(),
replyInfo = replyTo ?.let { ReplyInfo.Internal(it) },
replyMarkup = replyMarkup,
senderBot = senderBot,
guestBotCallerUser = guestBotCallerUser,
guestBotCallerChat = guestBotCallerChat,
mediaGroupId = mediaGroupId,
fromOffline = fromOffline,
effectId = effectId
)
}

View File

@@ -27,6 +27,8 @@ data class PrivateForumContentMessageImpl<T: MessageContent>(
override val replyInfo: ReplyInfo?,
override val replyMarkup: InlineKeyboardMarkup?,
override val senderBot: CommonBot?,
override val guestBotCallerUser: User?,
override val guestBotCallerChat: PreviewChat?,
override val mediaGroupId: MediaGroupId?,
override val fromOffline: Boolean,
override val effectId: EffectId?,

View File

@@ -476,26 +476,6 @@ internal data class RawMessage(
cost = paid_star_count,
)
}
(guest_bot_caller_user ?: guest_bot_caller_chat) != null -> {
AnswerGuestContentMessageImpl(
messageId = messageId,
from = checkedFrom ?: from ?: error("Was detected guest message, but owner (sender) of the message was not found"),
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 ?: error("For guest answers sender bot must be presented"),
mediaGroupId = media_group_id,
guestBotCallerUser = guest_bot_caller_user ?: error("For guest content message it is required to have user which called the bot"),
guestBotCallerChat = guest_bot_caller_chat ?: error("For guest content message it is required to have chat in that called the bot"),
fromOffline = is_from_offline,
cost = paid_star_count,
)
}
else -> {
when (chat) {
is PreviewChannelDirectMessagesChat -> {
@@ -693,6 +673,8 @@ internal data class RawMessage(
replyMarkup = reply_markup,
content = content,
senderBot = via_bot,
guestBotCallerUser = guest_bot_caller_user,
guestBotCallerChat = guest_bot_caller_chat,
mediaGroupId = media_group_id,
senderBoostsCount = sender_boost_count,
fromOffline = is_from_offline,
@@ -767,6 +749,8 @@ internal data class RawMessage(
replyMarkup = reply_markup,
content = content,
senderBot = via_bot,
guestBotCallerUser = guest_bot_caller_user,
guestBotCallerChat = guest_bot_caller_chat,
mediaGroupId = media_group_id,
senderBoostsCount = sender_boost_count,
fromOffline = is_from_offline,
@@ -843,6 +827,8 @@ internal data class RawMessage(
replyMarkup = reply_markup,
content = content,
senderBot = via_bot,
guestBotCallerUser = guest_bot_caller_user,
guestBotCallerChat = guest_bot_caller_chat,
mediaGroupId = media_group_id,
senderBoostsCount = sender_boost_count,
fromOffline = is_from_offline,
@@ -883,6 +869,8 @@ internal data class RawMessage(
replyInfo = replyInfo,
replyMarkup = reply_markup,
senderBot = via_bot,
guestBotCallerUser = guest_bot_caller_user,
guestBotCallerChat = guest_bot_caller_chat,
mediaGroupId = media_group_id,
fromOffline = is_from_offline,
effectId = effect_id,
@@ -903,6 +891,8 @@ internal data class RawMessage(
replyInfo = replyInfo,
replyMarkup = reply_markup,
senderBot = via_bot,
guestBotCallerUser = guest_bot_caller_user,
guestBotCallerChat = guest_bot_caller_chat,
mediaGroupId = media_group_id,
fromOffline = is_from_offline,
effectId = effect_id,

View File

@@ -6,7 +6,6 @@ import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
import dev.inmo.tgbotapi.types.chat.CommonBot
import dev.inmo.tgbotapi.types.chat.PreviewChat
import dev.inmo.tgbotapi.types.chat.User
import dev.inmo.tgbotapi.types.message.abstracts.GuestContentMessage
import dev.inmo.tgbotapi.types.message.abstracts.RequestGuestContentMessage
import dev.inmo.tgbotapi.types.message.content.MessageContent
import kotlinx.serialization.SerialName

View File

@@ -49,7 +49,7 @@ interface AnonymousGroupContentMessage<T : MessageContent> : GroupContentMessage
get() = chat
}
interface CommonGroupContentMessage<T : MessageContent> : GroupContentMessage<T>, PotentiallyFromUserGroupContentMessage<T>, FromUserMessage
interface CommonGroupContentMessage<T : MessageContent> : GroupContentMessage<T>, PotentiallyFromUserGroupContentMessage<T>, FromUserMessage, PossiblyGuestAnswerMessage
interface FromChannelForumContentMessage<T: MessageContent> : FromChannelGroupContentMessage<T>, ForumContentMessage<T>
@@ -62,7 +62,7 @@ interface AnonymousForumContentMessage<T : MessageContent> : ForumContentMessage
get() = chat
}
interface CommonForumContentMessage<T : MessageContent> : ForumContentMessage<T>, PotentiallyFromUserGroupContentMessage<T>, FromUserMessage
interface CommonForumContentMessage<T : MessageContent> : ForumContentMessage<T>, PotentiallyFromUserGroupContentMessage<T>, FromUserMessage, PossiblyGuestAnswerMessage
interface CommonChannelDirectMessagesContentMessage<T : MessageContent> : ChannelDirectMessagesContentMessage<T>, PotentiallyFromUserGroupContentMessage<T>, FromUserMessage

View File

@@ -4,14 +4,9 @@ import dev.inmo.tgbotapi.types.GuestQueryId
import dev.inmo.tgbotapi.types.chat.CommonBot
import dev.inmo.tgbotapi.types.message.content.MessageContent
sealed interface GuestContentMessage<T: MessageContent> : CommonContentMessage<T>,
interface RequestGuestContentMessage<T : MessageContent> : CommonContentMessage<T>,
RequestGuestMessage,
SpecialMessage,
GuestMessage,
FromUserMessage,
PossiblySentViaBot {
}
interface AnswerGuestContentMessage<T : MessageContent> : GuestContentMessage<T>, AnswerGuestMessage, PossiblySentViaBot {
override val senderBot: CommonBot
}
interface RequestGuestContentMessage<T : MessageContent> : GuestContentMessage<T>, RequestGuestMessage, SpecialMessage
PossiblySentViaBot

View File

@@ -3,7 +3,7 @@ package dev.inmo.tgbotapi.types.message.abstracts
import dev.inmo.tgbotapi.types.chat.PreviewChat
import dev.inmo.tgbotapi.types.chat.User
interface AnswerGuestMessage : GuestMessage {
val guestBotCallerUser: User
val guestBotCallerChat: PreviewChat
interface PossiblyGuestAnswerMessage : Message {
val guestBotCallerUser: User?
val guestBotCallerChat: PreviewChat?
}

View File

@@ -3,6 +3,10 @@ package dev.inmo.tgbotapi.types.message.abstracts
import dev.inmo.tgbotapi.types.chat.PreviewPrivateChat
import dev.inmo.tgbotapi.types.message.content.MessageContent
interface PrivateContentMessage<T: MessageContent> : PossiblySentViaBotCommonMessage<T>, FromUserMessage, PossiblyOfflineMessage, PossiblyWithEffectMessage {
interface PrivateContentMessage<T: MessageContent> : PossiblySentViaBotCommonMessage<T>,
FromUserMessage,
PossiblyOfflineMessage,
PossiblyWithEffectMessage,
PossiblyGuestAnswerMessage {
override val chat: PreviewPrivateChat
}

View File

@@ -2,9 +2,6 @@ package dev.inmo.tgbotapi.types.update
import dev.inmo.tgbotapi.types.UpdateId
import dev.inmo.tgbotapi.types.message.abstracts.AccessibleMessage
import dev.inmo.tgbotapi.types.message.abstracts.CommonContentMessage
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
import dev.inmo.tgbotapi.types.message.abstracts.GuestContentMessage
import dev.inmo.tgbotapi.types.message.abstracts.RequestGuestContentMessage
import dev.inmo.tgbotapi.types.update.abstracts.BaseSentMessageUpdate

View File

@@ -62,6 +62,8 @@ fun <T : MediaGroupPartContent> List<CommonContentMessage<T>>.asMediaGroupMessag
replyInfo = sourceMessage.replyInfo,
replyMarkup = sourceMessage.replyMarkup,
senderBot = sourceMessage.senderBot,
guestBotCallerUser = sourceMessage.guestBotCallerUser,
guestBotCallerChat = sourceMessage.guestBotCallerChat,
mediaGroupId = sourceMessage.mediaGroupId,
fromOffline = sourceMessage.fromOffline,
effectId = sourceMessage.effectId,
@@ -95,6 +97,8 @@ fun <T : MediaGroupPartContent> List<CommonContentMessage<T>>.asMediaGroupMessag
replyMarkup = sourceMessage.replyMarkup,
content = content,
senderBot = sourceMessage.senderBot,
guestBotCallerUser = sourceMessage.guestBotCallerUser,
guestBotCallerChat = sourceMessage.guestBotCallerChat,
mediaGroupId = sourceMessage.mediaGroupId,
senderBoostsCount = sourceMessage.senderBoostsCount,
fromOffline = sourceMessage.fromOffline,
@@ -165,6 +169,8 @@ fun <T : MediaGroupPartContent> List<CommonContentMessage<T>>.asMediaGroupMessag
replyMarkup = sourceMessage.replyMarkup,
content = content,
senderBot = sourceMessage.senderBot,
guestBotCallerUser = sourceMessage.guestBotCallerUser,
guestBotCallerChat = sourceMessage.guestBotCallerChat,
mediaGroupId = sourceMessage.mediaGroupId,
senderBoostsCount = sourceMessage.senderBoostsCount,
fromOffline = sourceMessage.fromOffline,
@@ -284,23 +290,5 @@ fun <T : MediaGroupPartContent> List<CommonContentMessage<T>>.asMediaGroupMessag
fromOffline = sourceMessage.fromOffline,
cost = sourceMessage.cost,
)
is AnswerGuestContentMessage -> AnswerGuestContentMessageImpl(
messageId = sourceMessage.messageId,
from = sourceMessage.user,
chat = sourceMessage.chat,
content = content,
date = sourceMessage.date,
editDate = sourceMessage.editDate,
hasProtectedContent = sourceMessage.hasProtectedContent,
forwardOrigin = sourceMessage.forwardOrigin,
replyInfo = sourceMessage.replyInfo,
replyMarkup = sourceMessage.replyMarkup,
senderBot = sourceMessage.senderBot,
mediaGroupId = sourceMessage.mediaGroupId,
guestBotCallerUser = sourceMessage.guestBotCallerUser,
guestBotCallerChat = sourceMessage.guestBotCallerChat,
fromOffline = sourceMessage.fromOffline,
cost = sourceMessage.cost,
)
}
}