2016-03-09 4 views
0

То, что я пытаюсь сделать, извлекает фотографии профиля из пользователя и сбрасывает их на другой, все на PHP.Телеграмма бота sendPhoto не работает

Проблема, когда я отправляю фотографии с использованием file_id строки, все фотографии, отправленные пользователю, - это одно и то же единственное изображение!

Я действительно не запустил это, но я отправляю свои собственные фотографии для проверки функциональности, и результат - это текущее изображение профиля телеграммы, каждый раз.

Мой код:

<?php 
define('my_id', '12345678'); 

$userPhotos = apiRequestJson("getUserProfilePhotos", array('user_id' => my_id, 'offset' => 0, 'limit' => 1)); 

apiRequestJson("sendPhoto", array('chat_id' => my_id, 'photo' => $userPhotos['photos'][0][0]['file_id'])); 
apiRequestJson("sendPhoto", array('chat_id' => my_id, 'photo' => $userPhotos['photos'][0][1]['file_id'])); 
?> 

Ссылка на телеграмму бота апи:https://core.telegram.org/bots/api

Я бы благодарностью за любую помощь.

ответ

0

В коде есть две проблемы.

Прежде всего, когда в запросе вы установите параметр limit в 1, вы запрашиваете для только один фото. Просто удалите дополнительные offset и limit параметры, чтобы получить первые 100 фотографий:

$userPhotos = apiRequestJson('getUserProfilePhotos', array('user_id' => my_id)); 

Вторая проблема: возвращаемый ответ является «Массив Массив PhotoSize», это означает, что массив фотографий, которые массивы отличаются размеры фотографий:

$userPhotos['photos'][0][0]['file_id'] 
         │ │ 
       photos ─┘ └─ photo sizes 

Вы повторите второй указатель (размер одной фотографии); у вас есть вместо того, чтобы перебирать первый индекс:

apiRequestJson('sendPhoto', array('chat_id' => my_id, 'photo' => $userPhotos['photos'][0][0]['file_id'])); 
apiRequestJson('sendPhoto', array('chat_id' => my_id, 'photo' => $userPhotos['photos'][1][0]['file_id'])); 

Поскольку вы не знаете заранее, общее количество фотографий каждого пользователя, лучший способ для перебора foreach цикла:

foreach($userPhotos['photos'] as $photo) 
{ 
    apiRequestJson('sendPhoto', array('chat_id' => my_id, 'photo' => $photo[0]['file_id'])); 
} 

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

+0

Благодарю вас @ fusion3k, что сделал! Я очень благодарен за ваш всесторонний ответ. –