Telethon客户端授权异常:输入验证码后无响应且登录失败
Telegram Telethon授权无响应问题排查及解决
可能原因及对应解决方法
1. 异步调用未正确使用(最常见原因)
你的代码直接调用client.start()和client.run_until_disconnected(),但这两个方法都是异步协程,必须在异步上下文里用await等待执行完成,否则授权流程会被阻塞,导致验证码输入后无响应。
修正后的代码:
from telethon import TelegramClient, events import asyncio api_id = MY_API_ID api_hash = "MY_API_HASH" client = TelegramClient('first_session', api_id, api_hash) @client.on(events.NewMessage(outgoing=True, pattern=None)) async def greeting(event): chat = await event.get_chat() await client.send_message(chat, "Hello, World!") async def main(): await client.start() await client.run_until_disconnected() if __name__ == "__main__": asyncio.run(main())
2. 控制台输入环境异常
部分IDE内置终端可能存在输入捕获问题,导致验证码无法被程序正确接收。建议切换到系统原生终端(Windows命令提示符、macOS/Linux终端)运行代码。
3. 账号需额外验证
如果你的账号开启了两步验证,或者Telegram检测到异常登录(新设备/新IP),会要求输入额外验证信息(比如两步验证密码),但原代码未处理这种交互,导致流程卡住。运行代码时注意控制台是否有密码输入提示,按要求输入即可。
4. API信息错误或网络问题
- 检查
api_id和api_hash是否与Telegram开发者平台申请的完全一致,错误的API信息会导致授权静默失败。 - 确保网络能正常访问Telegram服务器,网络波动或代理配置异常会导致验证码提交超时,触发“登录尝试未完成”通知。
内容的提问来源于stack exchange,提问作者Даниил Чиндин
相关产品推荐
相关产品推荐

