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

Telethon异步代码报错ConnectionError:无法在断开连接时发送请求

解决Telethon批量发送消息时的ConnectionError问题

你的代码出现ConnectionError: Cannot send requests while disconnected错误,核心原因是Telegram客户端未正确建立连接,还有几处异步代码的使用错误,以下是修复方案:

错误点说明

  • 未启动客户端连接:创建TelegramClient实例后,必须通过await client.start()完成登录连接,否则客户端处于断开状态,无法发送请求。
  • 误用同步sleep:time.sleep()是同步阻塞函数,在异步函数中会卡住整个事件循环,应该用异步的asyncio.sleep()。
  • 异步方法未加await:client.disconnect()是异步方法,必须用await调用才能正确执行。
  • 冗余的run函数:不需要额外封装run()函数,直接用asyncio.run(main())即可。

修复后的完整代码

import asyncio
from telethon import TelegramClient

# 填入你的API信息
api_id = 13******
api_hash = '8ba0a***********************'
message_file = 'messages.txt'

async def main():
    # 初始化客户端并启动连接
    client = TelegramClient('sender', api_id, api_hash)
    await client.start()  # 关键:启动客户端连接

    # 读取消息文件
    with open(message_file, 'r') as f:
        messages = f.readlines()

    # 批量发送消息,间隔60秒
    for message in messages:
        await client.send_message('@Example_recipient', message.strip())
        await asyncio.sleep(60)  # 使用异步sleep

    # 正确断开连接
    await client.disconnect()

# 直接运行主函数
asyncio.run(main())

额外提示

第一次运行时,Telethon会提示你输入手机号和验证码完成登录,登录信息会保存在sender.session文件中,后续运行无需重复登录。

内容的提问来源于stack exchange,提问作者MohaMoney

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:55:27