Skip to content

Critical bug: obj.pop in RichText.de_json() fails as it got a list instead of a dictionary #2634

Closed

Description

@hankertrix

This is the rich message that causes the error:

    "rich_message": {
      "blocks": [
        {
          "type": "paragraph",
          "text": [
            "The new ",
            {
              "type": "url",
              "text": "Akhmad Kadyrov",
              "url": "https://en.wikipedia.org/wiki/Akhmad_Kadyrov"
            },
            " Mosque, completed in 2014, is the largest mosque in Israel and was built with money donated by the ",
            {
              "type": "url",
              "text": "Chechen",
              "url": "https://en.wikipedia.org/wiki/Chechnya"
            },
            " government.",
            {
              "type": "url",
              "text": {
                "type": "superscript",
                "text": "[56]"
              },
              "url": "https://en.wikipedia.org/wiki/Abu_Ghosh#cite_note-56"
            }
          ]
        }
      ]
    }

Full traceback:

2026-10-17 02:13:26,810 (__init__.py:1175 MainThread) ERROR - TeleBot: "Infinity polling exception: pop expected at most 1 argument, got 2"
ERROR: 2026-10-17 02:13:26,810 - Infinity polling exception: pop expected at most 1 argument, got 2
2026-10-17 02:13:26,811 (__init__.py:1177 MainThread) ERROR - TeleBot: "Exception traceback:
Traceback (most recent call last):
  File "/opt/render/project/src/.venv/lib/python3.12/site-packages/telebot/__init__.py", line 1170, in infinity_polling
    self.polling(non_stop=True, timeout=timeout, long_polling_timeout=long_polling_timeout,
  File "/opt/render/project/src/.venv/lib/python3.12/site-packages/telebot/__init__.py", line 1258, in polling
    self.__threaded_polling(non_stop=non_stop, interval=interval, timeout=timeout, long_polling_timeout=long_polling_timeout,
  File "/opt/render/project/src/.venv/lib/python3.12/site-packages/telebot/__init__.py", line 1333, in __threaded_polling
    raise e
  File "/opt/render/project/src/.venv/lib/python3.12/site-packages/telebot/__init__.py", line 1294, in __threaded_polling
    polling_thread.raise_exceptions()
  File "/opt/render/project/src/.venv/lib/python3.12/site-packages/telebot/util.py", line 117, in raise_exceptions
    raise self.exception_info
  File "/opt/render/project/src/.venv/lib/python3.12/site-packages/telebot/util.py", line 99, in run
    task(*args, **kwargs)
  File "/opt/render/project/src/.venv/lib/python3.12/site-packages/telebot/__init__.py", line 696, in __retrieve_updates
    updates = self.get_updates(offset=(self.last_update_id + 1),
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/render/project/src/.venv/lib/python3.12/site-packages/telebot/__init__.py", line 671, in get_updates
    return [types.Update.de_json(ju) for ju in json_updates]
            ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/render/project/src/.venv/lib/python3.12/site-packages/telebot/types.py", line 218, in de_json
    message = Message.de_json(obj.get('message'))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/render/project/src/.venv/lib/python3.12/site-packages/telebot/types.py", line 1739, in de_json
    opts['rich_message'] = RichMessage.de_json(obj['rich_message'])
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/render/project/src/.venv/lib/python3.12/site-packages/telebot/types.py", line 16582, in de_json
    obj['blocks'] = [RichBlock.de_json(block) for block in obj['blocks']]
                     ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/render/project/src/.venv/lib/python3.12/site-packages/telebot/types.py", line 15838, in de_json
    return RichBlockParagraph.de_json(obj)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/render/project/src/.venv/lib/python3.12/site-packages/telebot/types.py", line 15911, in de_json
    obj['text'] = RichText.de_json(obj['text'])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/render/project/src/.venv/lib/python3.12/site-packages/telebot/types.py", line 14703, in de_json
    return [RichText.de_json(item) for item in json_string]
            ^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/render/project/src/.venv/lib/python3.12/site-packages/telebot/types.py", line 14734, in de_json
    return RichTextUrl.de_json(obj)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/render/project/src/.venv/lib/python3.12/site-packages/telebot/types.py", line 15240, in de_json
    obj['text'] = RichText.de_json(obj['text'])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/render/project/src/.venv/lib/python3.12/site-packages/telebot/types.py", line 14724, in de_json
    return RichTextSuperscript.de_json(obj)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/render/project/src/.venv/lib/python3.12/site-packages/telebot/types.py", line 15073, in de_json
    obj['text'] = RichText.de_json(obj['text'])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/render/project/src/.venv/lib/python3.12/site-packages/telebot/types.py", line 14706, in de_json
    type = obj.pop('type', None)
           ^^^^^^^^^^^^^^^^^^^^^
TypeError: pop expected at most 1 argument, got 2
"

Activity

  1. Badiboy commented on Oct 17, 2026

    @Badiboy
    Collaborator

    Fixed here.
    #2635

  2. added a commit that references this issue on Oct 17, 2026
    7c931e1
  3. hankertrix commented on Oct 17, 2026

    @hankertrix
    Author

    Please cut a release as soon as possible, thank you.

  4. Badiboy commented on Oct 17, 2026

    @Badiboy
    Collaborator

    Update pushed to pypi

  5. hankertrix commented on Oct 17, 2026

    @hankertrix
    Author

    Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions