电报机器人 sendPhoto 不工作
Telegram bot sendPhoto not working
我正在尝试做的事情 是从用户那里检索个人资料照片并将其发送给另一个用户,全部由 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']));
?>
Link 到电报机器人 api: https://core.telegram.org/bots/api
如有任何帮助,我将不胜感激。
你的代码有两个问题。
首先,当您在请求中将 limit
参数设置为 1
时,您请求 只有一张 照片。只需删除可选的 offset
和 limit
参数即可检索前 100 张照片:
$userPhotos = apiRequestJson( 'getUserProfilePhotos', array( 'user_id' => my_id ) );
第二个问题:返回的响应是“Array of Array of 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'] ) );
}
最后但并非最不重要的一点是,请注意通过此请求您将检索 用户个人资料 照片,因此在大多数情况下您只会获得一张照片。
我正在尝试做的事情 是从用户那里检索个人资料照片并将其发送给另一个用户,全部由 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']));
?>
Link 到电报机器人 api: https://core.telegram.org/bots/api
如有任何帮助,我将不胜感激。
你的代码有两个问题。
首先,当您在请求中将 limit
参数设置为 1
时,您请求 只有一张 照片。只需删除可选的 offset
和 limit
参数即可检索前 100 张照片:
$userPhotos = apiRequestJson( 'getUserProfilePhotos', array( 'user_id' => my_id ) );
第二个问题:返回的响应是“Array of Array of 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'] ) );
}
最后但并非最不重要的一点是,请注意通过此请求您将检索 用户个人资料 照片,因此在大多数情况下您只会获得一张照片。