1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2024-06-14 22:05:28 +00:00
tgbotapi/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/RawCallbackQuery.kt

62 lines
2.5 KiB
Kotlin
Raw Normal View History

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.*
import dev.inmo.tgbotapi.types.chat.CommonUser
import dev.inmo.tgbotapi.types.message.abstracts.*
2020-10-04 11:06:30 +00:00
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer
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)
val from: CommonUser,
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class)
2024-01-07 09:52:49 +00:00
val message: Message? = null,
2018-12-26 08:07:24 +00:00
@SerialName(inlineMessageIdField)
2024-03-16 14:36:48 +00:00
val inlineMessageId: InlineMessageId? = null,
2018-12-26 08:07:24 +00:00
@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 {
2024-01-07 09:52:49 +00:00
message != null && data != null -> when {
message is ContentMessage<*> -> MessageDataCallbackQuery(id, from, chatInstance, message, data)
message is InaccessibleMessage -> InaccessibleMessageDataCallbackQuery(id, from, chatInstance, message, data)
else -> UnknownCallbackQueryType(
id,
from,
chatInstance,
raw
)
}
message != null && gameShortName != null -> when {
message is ContentMessage<*> -> MessageGameShortNameCallbackQuery(id, from, chatInstance, message, gameShortName)
message is InaccessibleMessage -> InaccessibleMessageGameShortNameCallbackQuery(id, from, chatInstance, message, gameShortName)
else -> UnknownCallbackQueryType(
id,
from,
chatInstance,
raw
)
}
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
}
}
}