Closed hamidb80 closed 2 years ago
I think we better use stdlib/json
instead of jsmn
because it's gotten 20x performace improvement after this
here's stack trace
>>> C:\Users\HamidB80\Documents\programming\nim\sam\sam.nim(242, 10) `node.mapper.tokens[node.pos].kind == JSMN_STRING`
Async traceback:
C:\Users\HamidB80\Documents\programming\nim\azmmonak\src\main.nim(311) main
C:\Users\HamidB80\Documents\programming\nim\telebot\src\telebot\private\api.nim(1183) poll
C:\Users\HamidB80\.choosenim\toolchains\nim-1.6.2\lib\pure\asyncdispatch.nim(1961) waitFor
C:\Users\HamidB80\.choosenim\toolchains\nim-1.6.2\lib\pure\asyncdispatch.nim(1653) poll
C:\Users\HamidB80\.choosenim\toolchains\nim-1.6.2\lib\pure\asyncdispatch.nim(419) runOnce
C:\Users\HamidB80\.choosenim\toolchains\nim-1.6.2\lib\pure\asyncdispatch.nim(234) processPendingCallbacks
C:\Users\HamidB80\.choosenim\toolchains\nim-1.6.2\lib\pure\asyncmacro.nim(28) loopNimAsyncContinue
C:\Users\HamidB80\Documents\programming\nim\telebot\src\telebot\private\api.nim(1177) loopIter
C:\Users\HamidB80\Documents\programming\nim\telebot\src\telebot\private\utils.nim(97) unmarshal
C:\Users\HamidB80\Documents\programming\nim\telebot\src\telebot\private\utils.nim(176) toOption
C:\Users\HamidB80\Documents\programming\nim\telebot\src\telebot\private\utils.nim(97) unmarshal
C:\Users\HamidB80\Documents\programming\nim\telebot\src\telebot\private\utils.nim(176) toOption
C:\Users\HamidB80\Documents\programming\nim\telebot\src\telebot\private\utils.nim(97) unmarshal
C:\Users\HamidB80\Documents\programming\nim\telebot\src\telebot\private\utils.nim(180) toOption
C:\Users\HamidB80\Documents\programming\nim\sam\sam.nim(242) toStr
C:\Users\HamidB80\.choosenim\toolchains\nim-1.6.2\lib\system\assertions.nim(38) failedAssertImpl
C:\Users\HamidB80\.choosenim\toolchains\nim-1.6.2\lib\system\assertions.nim(28) raiseAssert
C:\Users\HamidB80\.choosenim\toolchains\nim-1.6.2\lib\system\fatal.nim(53) sysFatal
Exception message: C:\Users\HamidB80\Documents\programming\nim\sam\sam.nim(242, 10) `node.mapper.tokens[node.pos].kind == JSMN_STRING`
actually the logger says the received message is
[
{
"update_id": 693909035,
"message": {
"message_id": 625,
"from": {
"id": 101862091,
"is_bot": false,
"first_name": "Hamid",
"last_name": "Bluri",
"username": "hamidb80",
"language_code": "en"
},
"chat": {
"id": 101862091,
"first_name": "Hamid",
"last_name": "Bluri",
"username": "hamidb80",
"type": "private"
},
"date": 1640893781,
"reply_to_message": {
"message_id": 624,
"from": {
"id": 2004052302,
"is_bot": true,
"first_name": "testboybot",
"username": "mytestbiybot"
},
"chat": {
"id": 101862091,
"first_name": "Hamid",
"last_name": "Bluri",
"username": "hamidb80",
"type": "private"
},
"date": 1640893777,
"text": "\u0631\u0648\u06cc \u062f\u06a9\u0645\u0647 \u0628\u0632\u0646\u06cc\u062f"
},
"contact": {
"phone_number": "+989100020106",
"first_name": "Hamid",
"last_name": "Bluri",
"user_id": 101862091
}
}
}
]
here's a small reproducible example: https://gist.github.com/hamidb80/1e37a2780e2ff18bf906fc19cf2e24d3
I will migrate to std/json
Hey,
I just figured it out that sharing contact info causes
node.mapper.tokens[node.pos].kind == JSMN_STRING
to fail. [fromtoStr
function in\sam-0.1.17\sam.nim(240, 10)
]the value of
node.mapper.tokens[node.pos].kind
isJSMN_PRIMITIVE
.tested on telebot
1.0.12
nim1.6.2