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
相关产品推荐
相关产品推荐

