2022-04-21 16:42:54 +00:00
|
|
|
package dev.inmo.tgbotapi.types.queries.callback
|
2018-12-26 08:07:24 +00:00
|
|
|
|
2020-10-04 11:06:30 +00:00
|
|
|
import dev.inmo.tgbotapi.types.*
|
2023-02-19 12:35:36 +00:00
|
|
|
import dev.inmo.tgbotapi.types.chat.CommonUser
|
2022-04-21 18:16:41 +00:00
|
|
|
import dev.inmo.tgbotapi.types.chat.User
|
2022-01-06 07:54:22 +00:00
|
|
|
import dev.inmo.tgbotapi.types.message.abstracts.*
|
2020-10-04 11:06:30 +00:00
|
|
|
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer
|
2022-05-01 05:52:02 +00:00
|
|
|
import dev.inmo.tgbotapi.types.message.content.MessageContent
|
2019-12-06 10:46:38 +00:00
|
|
|
import kotlinx.serialization.SerialName
|
|
|
|
import kotlinx.serialization.Serializable
|
2018-12-26 08:07:24 +00:00
|
|
|
|
|
|
|
@Serializable
|
2019-08-17 16:50:52 +00:00
|
|
|
internal data class RawCallbackQuery(
|
2018-12-26 08:07:24 +00:00
|
|
|
@SerialName(idField)
|
|
|
|
val id: CallbackQueryIdentifier,
|
|
|
|
@SerialName(fromField)
|
2023-02-19 12:35:36 +00:00
|
|
|
val from: CommonUser,
|
2019-08-17 05:50:46 +00:00
|
|
|
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class)
|
2022-01-06 07:54:22 +00:00
|
|
|
val message: ContentMessage<MessageContent>? = null,
|
2018-12-26 08:07:24 +00:00
|
|
|
@SerialName(inlineMessageIdField)
|
|
|
|
val inlineMessageId: InlineMessageIdentifier? = null,
|
|
|
|
@SerialName("chat_instance")
|
|
|
|
val chatInstance: String,
|
|
|
|
val data: String? = null,
|
|
|
|
@SerialName("game_short_name")
|
|
|
|
val gameShortName: String? = null
|
|
|
|
) {
|
2020-01-22 21:59:59 +00:00
|
|
|
private var inited: CallbackQuery? = null
|
|
|
|
fun asCallbackQuery(raw: String): CallbackQuery {
|
|
|
|
return inited ?: when {
|
2019-08-17 05:50:46 +00:00
|
|
|
message != null && data != null -> MessageDataCallbackQuery(id, from, chatInstance, message, data)
|
|
|
|
message != null && gameShortName != null -> MessageGameShortNameCallbackQuery(id, from, chatInstance, message, gameShortName)
|
2018-12-26 08:07:24 +00:00
|
|
|
inlineMessageId != null && data != null -> InlineMessageIdDataCallbackQuery(id, from, chatInstance, inlineMessageId, data)
|
|
|
|
inlineMessageId != null && gameShortName != null -> InlineMessageIdGameShortNameCallbackQuery(id, from, chatInstance, inlineMessageId, gameShortName)
|
2020-01-22 21:59:59 +00:00
|
|
|
else -> UnknownCallbackQueryType(
|
|
|
|
id,
|
|
|
|
from,
|
|
|
|
chatInstance,
|
|
|
|
raw
|
|
|
|
)
|
|
|
|
}.also {
|
|
|
|
inited = it
|
2018-12-26 08:07:24 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|