php - 使用 Telegram Bot PHP sendMediaGroup 方法
问题描述
我试图用我的电报机器人将一些本地图像发送到一条消息中。我使用sendMediaGroup方法发送,但不幸的是不起作用。这是我的代码:
<?php
$url = "https://api.telegram.org/bot" . "TOKEN" . "/sendMediaGroup";
$postContent = [
'chat_id' => $GLOBALS['chatId'],
'media' => json_encode([
['type' => 'photo', 'media' => new \CURLFile(__DIR__ . '/img1.png')], // Not working
['type' => 'photo', 'media' => new \CURLFile('attach://' . __DIR__ . 'jpg1.png')], // Not working
['type' => 'video', 'media' => new CURLFile(realpath('mp4.mp4'))], // Not working
])
];
post($url, $postContent);
function post($url, $postContent)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postContent);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Content-Type: multipart/form-data']);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
?>
解决方案
要使用 Telegram bot API 的方法上传您的媒体sendMediaGroup
,您需要使用attach://fileName
way 并将文件内容附加到您的请求中。像这样的东西:
$postContent = [
'chat_id' => $GLOBALS['chatId'],
'media' => json_encode([
['type' => 'photo', 'media' => 'attach://file1.png' ],
['type' => 'photo', 'media' => 'attach://file2.png' ],
]),
'file1.png' => new CURLFile(realpath($filePath1)),
'file2.png' => new CURLFile(realpath($filePath2)),
];
post($url, $postContent);
推荐阅读
- javascript - 带有交叉点观察者的循环滚动在野生动物园中不起作用
- if-statement - Google Apps 脚本 - If 函数逻辑和 URL
- rest - BigQuery - REST API - 身份验证/自动化
- android - Flutter 后台服务并使用 Firebase 消息打开应用程序
- javascript - Polarion - 向用户显示消息框
- java - 在 UI 上显示值更快 Android JAVA
- python - TypeError:不可散列的类型:下拉菜单中的'set' plotly python
- python - 当我的所有语法都正确时,为什么在 python 中使用'if'会给我语法错误结果?
- python - Microsoft Translator v. 3.0 中没有替代语言检测 JSON 响应
- python - Django REST:项目与应用