JTelegramBot icon indicating copy to clipboard operation
JTelegramBot copied to clipboard

UnrecognizedPropertyException: Unrecognized field "is_bot"

Open gionata-bisciari opened this issue 8 years ago • 5 comments

UnrecognizedPropertyException: Unrecognized field "is_bot"

When I start the bot using bot.start(); I get this Exception: (I censored my data using "xxxxxxxxx")

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "is_bot" (class io.fouad.jtb.core.beans.User), not marked as ignorable (4 known properties: "first_name", "id", "last_name", "username"])
 at [Source: (String)"{"ok":true,"result":[{"update_id":xxxxxxxxx,
"message":{"message_id":1,"from":{"id":xxxxxxxxx,"is_bot":false,"first_name":"xxxxxxxxx","last_name":"xxxxxxxxx","username":"xxxxxxxxx","language_code":"it-IT"},"chat":{"id":xxxxxxxxx,"first_name":"xxxxxxxxx","last_name":"xxxxxxxxx","username":"xxxxxxxxx","type":"private"},"date":1505511396,"text":"/start","entities":[{"offset":0,"length":6,"type":"bot_command"}]}}]}
"; line: 2, column: 64] (through reference chain: io.fouad.jtb.core.beans.TelegramResult["result"]->java.lang.Object[][0]->io.fouad.jtb.core.beans.Update["message"]->io.fouad.jtb.core.beans.Message["from"]->io.fouad.jtb.core.beans.User["is_bot"])
	at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:60)
	at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:822)
	at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1151)
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1567)
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1545)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:293)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
	at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:136)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:287)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
	at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:136)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:287)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
	at com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:195)
	at com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:21)
	at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:136)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:287)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4001)
	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3011)
	at io.fouad.jtb.core.utils.JsonUtils.toJavaObject(JsonUtils.java:51)
	at io.fouad.jtb.core.JTelegramBot.getNewUpdates(JTelegramBot.java:288)
	at io.fouad.jtb.core.JTelegramBot.startPolling(JTelegramBot.java:161)
	at io.fouad.jtb.core.JTelegramBot.access$000(JTelegramBot.java:48)
	at io.fouad.jtb.core.JTelegramBot$1.run(JTelegramBot.java:136)
	at java.lang.Thread.run(Unknown Source)

gionata-bisciari avatar Sep 15 '17 21:09 gionata-bisciari

The same issue.

pobochiigo avatar Nov 16 '17 06:11 pobochiigo

Same issue here! But I could fix the error by adding several json keys to the user/message/chat class. Try adding the missing ones that are stated out by the error messages in the log or look up the json schema at the official telegram page.

Greets Robert

Magoli1 avatar Nov 20 '17 20:11 Magoli1

me too

kagaricyan avatar Mar 08 '18 13:03 kagaricyan

To fix this, add this the following line to all three io.fouad.jtb.core.utils.JsonUtils.toJavaObject(...)

mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

This will ignore all future fields Telegram adds on their future updates.

ksauyeung avatar Apr 18 '18 04:04 ksauyeung

Hm. This library should be updated more I guess...

Here's a recompiled core jar with the fix applied.

stefan-reich avatar Jul 22 '18 15:07 stefan-reich