你好我的机器人继续向我发送消息。 我的代码是:
while(true)
{
header('Content-Type: text/html; charset=utf-8');
$token= "MY-TOKEN";
$url= "https://api.telegram.org/bot".$token."/getUpdates";
$update = file_get_contents($url);
$arrayUpdate= json_decode($update, true);
foreach ($arrayUpdate['result'] as $key) {
$chat_id = $key['message']['from']['id'];
$command = $key['message']['text'];
}
if($command == "/start"){
$text= "starting...";
$url= "https://api.telegram.org/bot".$token."/sendMessage?chat_id=".$chat_id."&text=".$text;
file_get_contents($url);
}
}
我的机器人向我发送消息无限我希望我的机器人在我使用它时发送消息然后停止并等待下一个请求。
答案 0 :(得分:0)
您的问题是您在无限while
循环中放置检查更新的代码。所以你得到无限的信息。解决这个问题:
update_id
的唯一ID号。每次收到更新时,其update_id
等于最后一条消息的update_id
+ 1(每次更新到达时,其update_id
都会增加一个)。您可以通过在执行update_id
时传递offset
来要求bot api仅获取getUpdates
大于或等于您指定的更新的更新:api.telegram.org/bot<TOKEN>/getUpdates?offset=<UPDATE_ID>
update_id
。将其添加1.下次当您通过getUpdates
要求更新时,请将此新update_id
作为offset
传递,如上所示(或通过POST)。 api将为您带来下一条收到的消息。此外,当您使用偏移量来获取新消息时,旧消息将被删除。使用getUpdates
。getUpdates
队列中的消息最终将变为空,因为每个请求中的每条旧消息都会被删除。不要忘记照顾这种情况。有关getUpdates
的更多信息: API Documentation