ba0f3 / telebot.nim

Async Telegram Bot API Client implement in @Nim-Lang

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

sharing contact info causes error from `sam` module

hamidb80 opened this issue · comments

Hey,

I just figured it out that sharing contact info causes node.mapper.tokens[node.pos].kind == JSMN_STRING to fail. [from toStr function in \sam-0.1.17\sam.nim(240, 10)]

the value of node.mapper.tokens[node.pos].kind is JSMN_PRIMITIVE.

tested on telebot 1.0.12
nim 1.6.2

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
      }
    }
  }
]

I will migrate to std/json