Задать вопрос
@php_xak

Как отправить медиа через телеграм N кол-во раз?

Есть код:
/*токен который выдаётся при регистрации бота */
$token = "5340791844:AAEXXDlWHRXykV91USOQSevrPVU";

$arrayQuery = [
    'chat_id' => 1424646511,
    'media' => json_encode([
	    ['type' => 'photo', 'media' => 'attach://cat.jpg' ],
	    ['type' => 'photo', 'media' => 'attach://cat_2.jpg' ],
	    ['type' => 'photo', 'media' => 'attach://cat_3.jpg' ],
    ]),
    'cat.jpg' => new CURLFile(__DIR__ . '/cat.jpg'),
    'cat_2.jpg' => new CURLFile(__DIR__ . '/cat_2.jpg'),
    'cat_3.jpg' => new CURLFile(__DIR__ . '/cat_3.jpg'),
];


$ch = curl_init('https://api.telegram.org/bot'. $token .'/sendMediaGroup');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $arrayQuery);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
$res = curl_exec($ch);
curl_close($ch);

echo $res;


Я не знаю сколько всего будет сгенерировано картинок их может быть 3, а может 10, как все картинки прописать в "media" и "new CURLFile"?
Чтобы
['type' => 'photo', 'media' => 'attach://cat.jpg' ],
прописывались сами в зависимости кол-во документов.
  • Вопрос задан
  • 102 просмотра
Подписаться 1 Простой 5 комментариев
Решения вопроса 1
delphinpro
@delphinpro Куратор тега PHP
frontend developer
Как уже отметили, нет примера входных данных. Так что навскидку:

$input = [
    'cat.jpg',
    'cat_2.jpg',
    'cat_3.jpg',
]

$media = array_map(fn($image) => ['type' => 'photo', 'media' => 'attach://'.$image ], $input);

$arrayQuery = [
    'chat_id' => 1424646511,
    'media' => json_encode($media),
];

foreach ($input as $image) {
  $arrayQuery[$image] => new CURLFile(__DIR__ . '/' . $image);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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