тг бот апи тебе возвращается либо True либо обьект Message («On success, if the edited message was sent by the bot, the edited Message is returned, otherwise True is returned»), хотел в котлине это замапить как Message?.
В попытках это сделать написал такой костыль:
override fun deserialize(decoder: Decoder): MyData? {
val input = decoder as? JsonInput ?: throw SerializationException("This class can be loaded only by Json")
val t1 = input.decodeJson()
val t2 = (t1 as? JsonLiteral)?.primitive?.boolean
if(t2 != null && t2) return null
return MyData.serializer().deserialize(decoder)
}
Но он не работает т.к. внутри MyData.serializer().deserialize() юзается 2-й раз .decode().
Но сейчас я понял что такой костыль не нужен, т.к. можно сделать 2 перегрузки:
1) для редактирования сообщений бота (возвращает Message)
2) для редактирования inline сообщений (возвращает Unit)
Я, кстати, этот вопрос вообще ещё не решил
а вот тут можно из JsonObject напрямую получить MyData
Обсуждают сегодня