2017-03-02 105 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); 
    } 
} 

确保卷曲激活您的托管服务器上!