Telethon同步版本正常,为何异步迭代器无法正常工作?
解决Telethon异步版本卡在
iter_messages无输出的问题 1. 确保客户端完成异步连接
同步代码里client.start()是阻塞式完成登录连接,异步模式下必须用await client.start()显式完成连接,且要放在迭代消息操作之前:
from telethon import TelegramClient, PeerChannel import asyncio api_id = 你的API_ID api_hash = '你的API_HASH' cid = 频道ID client = TelegramClient('session_name', api_id, api_hash) sourcec = PeerChannel(channel_id=cid) async def main(): # 先完成客户端连接 await client.start() async for message in client.iter_messages(sourcec, 5): # 先打印消息文本确认是否获取到内容,避免因sender为空导致无输出 print(message.text) if message.sender: print(message.sender.username) asyncio.run(main())
2. 添加异常捕获排查错误
异步代码中若发生异常,可能会被静默吞噬,添加try-except块查看具体错误:
async def main(): try: await client.start() async for message in client.iter_messages(sourcec, 5): print(message.text) except Exception as e: print(f"错误详情: {e}")
常见触发问题的原因包括:API凭证错误、会话未完成登录、频道权限不足、网络连接异常等。
3. 确认Telethon版本与Python 3.9兼容
执行命令安装或升级到支持Python 3.9的Telethon版本:
pip install --upgrade telethon
4. 检查会话文件权限
异步模式下,会话文件(如session_name.session)的读写权限需正常,权限不足会导致客户端无法完成登录流程。
内容的提问来源于stack exchange,提问作者lemonsodium
相关产品推荐
相关产品推荐

