2017-03-02 167 views
0

我有一個問題,爲我的電報機器人創建一個自定義鍵盤。Telegram Bot PHP鍵盤不工作

簡單地說,它不工作,我不知道原因......

這是我的代碼:

<? 
$botToken = "*****"; 
$website = "https://api.telegram.org/bot".$botToken; 

$update = file_get_contents('php://input'); 
$update = json_decode($update, TRUE); 

$chatId = $update["message"]["chat"]["id"]; 
$message = $update["message"]["text"]; 
$telegramusername = $update["message"]["from"]["username"]; 
$message_id = $update["message"]["message_id"]; 
$message_name = $update["message"]["chat"]["first_name"]; 


switch($message) 
{ 
case "ciao": 
funzioneCiao($chatId); 
break; 
case "youtube": 
TastieraInline($chatId); 
break; 
default: 
TastieraMenuPrincipale($chatId); 
break; 
} 

function inviaMessaggio($chatId, $messaggio) 
{ 
    $url = "$GLOBALS[website]/sendMessage?chat_id=$chatId&parse_mode=HTML&text=".urlencode($messaggio); 
    file_get_contents($url); 
} 

function funzioneCiao($chatId) 
{ 
    $messaggio = "ciao"; 
inviaMessaggio($chatId, $messaggio); 
} 



function TastieraMenuPrincipale($chatId) 
{ 
    $messaggio = "ciaaaao"; 
    $tastiera = '&reply_markup={"keyboard":[["Menu Principale"],["Developer"]]}'; 
    $url = "$GLOBALS[website]"."/sendMessage?chat_id=".$chatId."&parse_mode=HTML&text=".$messaggio.$tastiera; 
    file_get_contents($url); 

} 

function TastieraInline($chatId) 
{ 
    $message = "Iscriviti subito"; 
    $tastiera = '&reply_markup={"inline_keyboard":[[{"text":"SEGUIMI!","url":"http://www.youtube.com"}]]}'; 
    $url = $GLOBALS[website].'/sendMessage?chat_id='.$chatId.'&parse_mod=HTML&text='.$message.$tastiera; 
    file_get_contents($url); 
} 
?> 

功能: 「funzioneCiao($ chatId);」和「inviaMessaggio($ chatId,$ messaggio)」的作品,但是, 「TastieraMenuPrincipale($ chatId)」和「TastieraInLine($ ChatId)」不起作用。

我是PHP的初學者,所以我有很多困難...

謝謝。

+0

您拍攝時顯示您的Bot令牌。它可能被濫用。您可以使用任何隨機字母代替。 – ManzoorWani

+0

這是一個例子,它不是我真正的機器人;) –

回答

0

我只是測試的代碼,它完美...

enter image description here

+0

Uhm我再次嘗試,但它不適用於我.... 我使用免費託管網絡使用我的機器人,但不工作.. 。 你可以幫我嗎? –

+0

我使用url(https://api.telegram ......)進行測試,它的工作原理。所以可能出現的問題有兩種: 「and'給出問題或我的freewebhosting無法做到這一點 –

+0

你能發佈完整的代碼嗎 – ManzoorWani

0

你爲什麼不使用捲曲的,而不是file_get_contents();?!

只是寫這個功能到你的代碼,然後調用它獲得新的更新後:

function makeHTTPRequest($method, $types = []){ 
    $url = 'https://api.telegram.org/bot'.$botToken.'/'.$method; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($types)); 
    $res = curl_exec($ch); 
    if (curl_error($ch)){ 
     var_dump(curl_error($ch)); 
    } else { 
     return json_decode($res); 
    } 
} 

確保捲曲激活您的託管服務器上!