Php 电报无法发送照片

Php 电报无法发送照片,php,telegram-bot,Php,Telegram Bot,我试图做的是从一个用户那里检索个人资料照片,并将其替换为另一个用户,这一切都是通过PHP实现的 问题是当我使用文件id字符串发送照片时,发送给用户的所有照片都是同一张照片 我还没有真正运行它,但我正在发送我自己的照片给自己测试功能,每次结果都是我当前的电报配置文件图片 我的代码: <?php define('my_id', '12345678'); $userPhotos = apiRequestJson("getUserProfilePhotos", array('user_id' =

我试图做的是从一个用户那里检索个人资料照片,并将其替换为另一个用户,这一切都是通过PHP实现的

问题是当我使用
文件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的链接:


非常感谢您的帮助。

您的代码中有两个问题

首先,当您在请求中将
limit
参数设置为
1
时,您只请求一张照片。只需删除可选的
offset
limit
参数即可检索前100张照片:

$userPhotos = apiRequestJson( 'getUserProfilePhotos', array( 'user_id' => my_id ) );
第二个问题:返回的响应是一个“照片大小数组”,这意味着一个照片数组是不同照片大小的数组:

$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'] ) );
}

最后但并非最不重要的一点是,请注意,通过此请求,您可以检索用户配置文件照片,因此在大多数情况下,您只能获得一张照片。

谢谢@fusion3k,成功了!我非常感谢你的全面回答。