@vim-studio
Увлекаюсь Электросамокатами веду канал на ютуб

У кого есть именнно работающее решение для телеграмм бота sendMediaGroup на чистом php без библиотек?

Как оказалось найти работающий пример очень большая сложность.

Отправляю одно фото без проблем, а вот с несколькими застрял сильно, и так и сяк пробовал, но безуспешно.
Поиски в сети тоже не привели к положительному результату, нашел вот такой пример и попытался его применить, убрав явные ошибки ( хотя говорилось что он рабочий ), но и итоге ничего (

$url = "https://api.telegram.org/bot" . "TOKEN" . "/sendMediaGroup";
    
 $postContent = [
            'chat_id' => "ID",
            'media' => json_encode([
                ['type' => 'photo', 'media' => 'attach://data.jpg' ],
                ['type' => 'photo', 'media' => 'attach://data.jpg' ],
            ]),
            'data1.jpg' => new CURLFile(realpath("/var/www/html/data.jpg")),
            'data.jpg' => new CURLFile(realpath("/var/www/html/data.jpg")),
        ];
    
    $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);

Код превратил в такой вид:
$url = "https://api.telegram.org/bot" . $api . "/sendMediaGroup";
    				
					$url_1 = $src_to_img . '1620919407-file_555.jpg';
					$url_2 = $src_to_img . '1620919409-file_556.png';
					$url_3 = $src_to_img . '1620919407-file_557.jpg';

				 	$postContent = [
				            'chat_id' => $chat_id,
				            'media' => json_encode([
				                ['type' => 'photo', 'media' => 'attach://1620919407-file_555.jpg' ],
				                ['type' => 'photo', 'media' => 'attach://1620919409-file_556.png' ],
				                ['type' => 'photo', 'media' => 'attach://1620919410-file_557.jpg' ]
				            ]),
				            '1620919407-file_555.jpg' => new CURLFile(realpath($url_1)),
				            '1620919409-file_556.png' => new CURLFile(realpath($url_2)),
				            '1620919410-file_557.jpg' => new CURLFile(realpath($url_3))
				        ];
				    
				    $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);


где

$src_to_img = "/var/www/www-root/data/www/mytelegrambot.club/escooter/img/users_img/";

$api - это токен
Картинки это лежащие на сервере картинки по пути в переменных $url_1, $url_2, $url_3

Мне бы еще текст к изображениям отправить, было бы вообще супер если в примере будет

Друзья, если что решение просто, отправляйте просто ссылки

$url = "https://api.telegram.org/bot" . $api . "/sendMediaGroup";

$postContent = [
'chat_id' => $chat_id,
'media' => json_encode([
['type' => 'photo', 'media' => 'https://mytelegrambot.club/escooter/img/users_img/...' ],
['type' => 'photo', 'media' => 'https://mytelegrambot.club/escooter/img/users_img/...' ],
['type' => 'photo', 'media' => 'https://mytelegrambot.club/escooter/img/users_img/...' ]
]),

];

$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);
  • Вопрос задан
  • 544 просмотра
Решения вопроса 1
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
"'Content-Type: multipart/form-data'" устанавливается автоматом при передаче файлов, а чего ты с аттачем мучаешься у тебя отправка все равно же с веб-сервера - передавал бы ссылки. И то что ты передаешь это всего лишь содержимое Message
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы