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

Telegram Bot批量发消息问题:仅最后一个Chat ID接收消息

解决Telegram Bot仅向最后一个Chat ID发送消息的问题

以下是针对你问题的具体排查和修复方案:

核心问题分析

你的代码出现仅最后一个Chat ID收到消息的情况,大概率是以下两个原因之一:

  1. 媒体组(media_group)被重复使用导致耗尽
  2. 未捕获异常导致循环提前中断
  3. Bot实例未正确初始化

修复代码示例

from telegram import Bot, InputMediaDocument

BOT_TOKEN = "xxxxxx"
CHAT_IDs = [-1001xxx,-100177xxx,-100188xxx]

# 循环外初始化Bot实例,避免重复创建
bot = Bot(BOT_TOKEN)

for CHAT_ID in CHAT_IDs:
    try:
        # 关键:每次循环重新生成media_group,不能复用同一个对象
        media_group = [
            InputMediaDocument(open("your_file1.pdf", "rb")),
            InputMediaDocument(open("your_file2.png", "rb"))
            # 根据你的需求添加媒体文件
        ]
        
        bot.send_media_group(CHAT_ID, media=media_group)
        
        # 可选:关闭文件句柄,避免资源泄漏
        for media in media_group:
            media.media.close()
            
    except Exception as e:
        # 捕获异常并打印,避免循环中断,同时排查具体错误
        print(f"发送到Chat ID {CHAT_ID}失败: {str(e)}")

关键修复点说明

  • 每次循环重新创建media_group:InputMediaDocument对象在调用send_media_group后内部状态会被修改,无法重复使用,必须在每次循环内重新生成媒体组。
  • 添加异常捕获:如果某个Chat ID发送失败(比如权限不足、ID无效、网络波动),未捕获的异常会直接终止循环,导致后续ID无法执行发送操作。
  • 循环外初始化Bot:避免在循环内重复创建Bot实例,既浪费资源也可能引发不必要的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 22:35:18