You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telethon中出现TypeError错误该如何解决?

解决Telethon备份脚本中TypeError: bytes or str expected, not <class 'int'>问题

在PowerShell中运行Telethon备份脚本,输入手机号后出现如下错误:

Please enter your phone (or bot token): (phone number)
Traceback (most recent call last):
  File "D:\Telegram Desktop\backup_will_be_inside_me\backup_script.py", line 13, in <module>
      client.start()
  File "C:\Users\Acer\AppData\Local\Programs\Python\Python311\Lib\site-packages\telethon\client\auth.py", line 128, in start
      else self.loop.run_until_complete(coro)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Acer\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 653, in run_until_complete
      return future.result()
             ^^^^^^^^^^^^^^^
  File "C:\Users\Acer\AppData\Local\Programs\Python\Python311\Lib\site-packages\telethon\client\auth.py", line 184, in _start
      await self.send_code_request(phone, force_sms=force_sms)
      File "C:\Users\Acer\AppData\Local\Programs\Python\Python311\Lib\site-packages\telethon\client\auth.py", line 434, in send_code_request
      result = await self(functions.auth.SendCodeRequest(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Acer\AppData\Local\Programs\Python\Python311\Lib\site-packages\telethon\client\users.py", line 30, in __call__
      return await self._call(self._sender, request, ordered=ordered)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Acer\AppData\Local\Programs\Python\Python311\Lib\site-packages\telethon\client\users.py", line 67, in _call
      future = sender.send(request, ordered=ordered)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Acer\AppData\Local\Programs\Python\Python311\Lib\site-packages\telethon\network\mtprotosender.py", line 181, in send
      state = RequestState(request)
              ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Acer\AppData\Local\Programs\Python\Python311\Lib\site-packages\telethon\network\requeststate.py", line 17, in __init__
      self.data = bytes(request)
                  ^^^^^^^^^^^^^^
  File "C:\Users\Acer\AppData\Local\Programs\Python\Python311\Lib\site-packages\telethon\tl\tlobject.py", line 194, in __bytes__
      return self._bytes()
             ^^^^^^^^^^^^^
  File "C:\Users\Acer\AppData\Local\Programs\Python\Python311\Lib\site-packages\telethon\tl\functions\auth.py", line 644, in _bytes
      self.serialize_bytes(self.api_hash),
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "C:\Users\Acer\AppData\Local\Programs\Python\Python311\Lib\site-packages\telethon\tl\tlobject.py", line 112, in serialize_bytes
      raise TypeError(
      TypeError: bytes or str expected, not <class 'int'>

解决方法

  • 检查脚本中api_hash的赋值:Telegram的API Hash是一串16进制字符串,必须以字符串类型传入,不能直接写数字(否则会被识别为int类型,导致序列化失败)。
  • 修正示例:将api_hash = 123456abcdef改为api_hash = "123456abcdef",用引号包裹哈希字符串。
  • 额外确认:api_id需要是整数类型(无需引号),不要和api_hash的格式搞混。

内容的提问来源于stack exchange,提问作者Ari Xiao-Wang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 09:23:21