如何为Telegram API发送多格式数据的文件?

我想用Telegram API发送文件和照片。问题是,一旦发送,它就会被缓存在服务器上。但如果我的文件改变了,我就会发送旧版本。因为文档中说。

传递一个file_id作为字符串来发送一个存在于Telegram服务器上的文件(推荐), 传递一个HTTP URL作为字符串让Telegram从互联网上获取一个文件, 或者使用multipartform -data上传一个新的文件.

但我不知道该如何实现。我试着用下面的方法,发送HTTPHEADER,但它仍然发送缓存的版本。

function sendPhoto($bot_id,$chat_id,$caption,$disable_notification,$photo_url)
{
    $ch = curl_init('https://api.telegram.org/bot'.$bot_id.'/sendPhoto');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    $param = array(
        'chat_id' => $chat_id,
        'caption' => $caption,
        'parse_mode' => 'html',
        'disable_notification' => $disable_notification,
        'photo' => $photo_url
    );

    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($param));

    $result = curl_exec($ch);
    curl_close($ch);

    return $result;
}

谁能帮帮我?)

解决方案:

由于你是通过url发送文件图像,telegram会使用它的缓存,不会再从那个特定的url中获取图像(当你使用浏览器查看图像或互联网上的任何资源时,可能会发生同样的行为)。

如果你想强迫telegram不使用缓存,你应该通过给出一些查询参数来改变url。在这种情况下,url会和你之前的url不同,telegram会重新获取图片。例如使用

$param = array(
  //...
 'photo' => $photo_url . '?timestamp=' . time()
);

给TA打赏
共{{data.count}}人
人已打赏
未分类

我可以在python中动态地创建dict的键吗?

2022-9-13 13:01:36

未分类

Java摇摆不定的drawRect额外像素

2022-9-13 13:01:38

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索