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

PHP Telegram Bot SDK调用sendMediaGroup发多图失败如何解决

问题根源

你代码的错误都出在传参不符合API规则,一共3个核心问题:

  • caption、parse_mode不是sendMediaGroup的顶级参数,必须写在media数组的第一个媒体对象里——Telegram的媒体组只支持给第一个媒体挂载说明文字,最终会展示为整个组的统一说明,顶级传这两个参数会被API直接忽略
  • media字段必须传入JSON序列化后的字符串,直接传PHP数组、或者刻意去掉json_encode的写法完全不符合API要求,必错
  • 用file_get_contents拉取自身服务器的HTTP地址读图片属于多余操作,既浪费内存,又容易触发HTTPS证书校验、网络波动、权限配置等问题导致读文件失败
方案1:直接使用公网图片URL(最推荐)

如果你的图片路径可以通过公网直接访问,直接把URL填到media字段里即可,不需要调用InputFile、不需要读文件内容,稳定性最高:

$reply = "*photos*";
$serverHost = $_SERVER['SERVER_NAME'];
$telegram->sendMediaGroup([
    'chat_id' => $chat,
    'media' => json_encode([
        [
            'type' => 'photo',
            'media' => "https://{$serverHost}/newbot/screens/ctry/en1.jpg",
            'caption' => $reply, // 说明必须放在第一个媒体项里
            'parse_mode' => 'markdown'
        ],
        [
            'type' => 'photo',
            'media' => "https://{$serverHost}/newbot/screens/ctry/en2.jpg"
        ]
    ])
]);

注意:不要尝试去掉json_encode,Telegram Bot API明确要求media参数传入JSON格式的字符串,直接传PHP数组会被接口拒绝。

方案2:上传非公开本地文件的写法

如果图片不能通过公网直接访问,需要走文件上传逻辑时,直接读本地磁盘路径即可,不要通过HTTP请求拉取自身服务器文件:

$reply = "*photos*";
// 直接拼接本地磁盘绝对路径,性能远高于HTTP请求读文件
$photo1Path = $_SERVER['DOCUMENT_ROOT']."/newbot/screens/ctry/en1.jpg";
$photo2Path = $_SERVER['DOCUMENT_ROOT']."/newbot/screens/ctry/en2.jpg";

$telegram->sendMediaGroup([
    'chat_id' => $chat,
    'media' => json_encode([
        [
            'type' => 'photo',
            'media' => 'attach://photo1',
            'caption' => $reply,
            'parse_mode' => 'markdown'
        ],
        [
            'type' => 'photo',
            'media' => 'attach://photo2'
        ]
    ]),
    'photo1' => InputFile::create($photo1Path),
    'photo2' => InputFile::create($photo2Path)
]);
避坑提示
  • 只要图片能通过公网正常访问,优先用URL传参,不需要走文件上传逻辑,请求速度更快、出错概率更低
  • 用Markdown解析模式时,记得转义说明文本里的特殊字符(*、_、[、]、(、)等),否则会触发API的格式解析错误
  • 单次sendMediaGroup最多支持传10个媒体文件,超过数量会直接报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:15:34