2016-08-05 29 views
1

Mein Bot antwortet wiederholt auf eine Mitteilung, wie kann ich es stoppen? Es liest Daten von/getupdates. Ich brauche eine Art Antwort gesendet Variable, aber nicht wissen, wie man es implementiertWie man meinen Telegrammbot stoppt, der mehrfach auf eine Mitteilung antwortet

<?php 

$page = $_SERVER['PHP_SELF']; 
$sec = "60"; 

$bottoken = "218567218:AAGQMx6lYCOhRapUXxIG5b0EkXTQOJ5y3uw"; 
$website = "https://api.telegram.org/bot".$bottoken; 


$update = file_get_contents($website."/getupdates"); 

$updatearray = json_decode($update, TRUE); 

$length = count($updatearray["result"]); 
$chatid = $updatearray["result"][$length-1]["message"]["chat"]["id"]; 
$text = $updatearray["result"][$length-1]["message"]["text"]; 

if($text == 'hi'){ 
    file_get_contents($website."/sendmessage?chat_id=".$chatid."&text=hello"); 

} 
elseif($text == 'bye'){ 
    file_get_contents($website."/sendmessage?chat_id=".$chatid."&text=piss off"); 
} 

?> 

<html> 
    <head> 
    <meta http-equiv="refresh" content="<?php echo $sec?>;URL='<?php echo $page?>'"> 
    </head> 
    <body> 
    </body> 
</html> 

Antwort

4

Sie können Memcache in PHP verwenden oder einfach eine Datenbank verwenden.

Speichern Sie die letzten update_id in Memcache oder Ihrer Datenbank. Auf diese Weise wissen Sie, welche Nachricht bereits beantwortet wurde. Für die nächste Zeit können Sie die letzte update_id abrufen, inkrementieren und dann eine neue Nachricht für die Antwort erhalten.

Gemäß Telegramm api Dokument können Sie zuletzt update_id +1 als offset param zu getUpdates übergeben.

+0

Wie können wir den Befehl stop erhalten, um das Senden von Broadcast-Nachrichten an nicht abonnierte Benutzer zu vermeiden? –