我正在尝试做的事情是从用户那里检索个人资料照片,并将其作为另一个用户,只需PHP。
问题当我使用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']));
?>
链接到电报机器人api: https://core.telegram.org/bots/api
我感谢您的帮助。
答案 0 :(得分: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'] ) );
}
最后但并非最不重要的是,请注意,根据此请求,您可以检索用户个人资料照片,因此在大多数情况下,您只能获得一张照片。