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

Telethon批量发送群消息卡顿延迟问题求助

问题诊断与优化方案

你的卡顿和发送缓慢问题,核心原因是触发了Telegram的消息发送速率限制,同时原代码的批量发送逻辑未做限流处理,导致服务器主动限制请求,进而出现长时间卡顿。以下是针对性的优化方案和修改后的代码:

关键优化点

  • 添加分级延迟:在单条消息发送后、群组切换时分别设置延迟,降低请求频率,规避限流
  • 处理限流异常:捕获Telethon专属的FloodWaitError,按要求等待后自动重试,避免卡顿中断
  • 优化群组遍历逻辑:先批量收集所有目标群组,再逐个发送,减少遍历与发送的资源冲突

修改后的代码

from telethon import TelegramClient
from telethon.errors import FloodWaitError
import asyncio

api_id = xxxxxx
api_hash = 'hash54356'

client = TelegramClient('new_session', api_id, api_hash, system_version="4.16.30-vxITSNOTBOT")

async def send_message(target, messages):
    try:
        if not str(target).startswith("-100"):
            print(f"{target} 不是有效群组,跳过...")
            return
        for message in messages:
            try:
                await client.send_message(target, message)
                # 单条消息发送后延迟3秒,避免短时间内发多条触发限流
                await asyncio.sleep(3)
            except FloodWaitError as e:
                print(f"触发Telegram限流,等待{e.seconds}秒后重试")
                await asyncio.sleep(e.seconds)
                await client.send_message(target, message)
                await asyncio.sleep(3)
        print(f"已向{target}发送{len(messages)}条消息")
    except Exception as e:
        print(f"向群组{target}发送消息时出错: {e}")


async def main():
    # 先收集所有需要发送的群组ID,避免遍历过程中阻塞发送流程
    target_groups = []
    async for dialog in client.iter_dialogs():
        if dialog.is_group:
            target_groups.append(dialog.id)
    
    # 逐个向群组发送消息,群组间额外延迟5秒
    for target in target_groups:
        messages = ["https://t.me/channel1", "https://t.me/channel2"]
        await send_message(target, messages)
        await asyncio.sleep(5)


with client:
    client.loop.run_until_complete(main())

额外建议

  1. 若你加入的群组数量较多,可进一步降低发送频率(比如把消息间延迟调到5秒,群组间延迟调到10秒)
  2. 定期清理session文件,或改用StringSession减少本地IO开销
  3. 避免在短时间内向几百个群组批量发送消息,分批次处理更稳妥

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:17:16