2016-09-01 86 views
3

對不起,如果我的問題太亂了,我是新來的,所以,任何建議是值得歡迎的。如何區分「消息」更新和「回撥查詢」更新? (Telegram Bot API)

如何區分「消息」更新和「回撥查詢」更新? 我設法制作了一個內聯鍵盤,但是當我使用它時,機器人只是掛起,他沒有回覆任何內容。我做了一點研究,發現this question,這幫助我理解了這個問題,但沒有其他的。

我的機器人使用類似於現在這個權利:

// read incoming info and grab the chatID 
$content = file_get_contents("php://input"); 
$update = json_decode($content, true); 
$chatID = $update["message"]["chat"]["id"]; 

switch($update["message"]["text"]){ 
    /* insert magic here */ 
} 

所以,這個代碼可以處理的消息,但不CallbackQueries。如果我wantew來處理它們,我可以用這樣的事情(基於另外一個問題的答案):

$callback_query = $update["callback_query"] 
/* same as above */ 

但我怎麼能檢查是否是一個消息或一個回調查詢?

回答

0

您可以簡單地檢查CallbackQuery是否爲空。 見電報文檔:

CallbackQuery

該對象表示從一個回調 按鈕在直列鍵盤進入的回調查詢。如果發起查詢 的按鈕已附加到機器人發送的消息,則該字段消息將爲 。如果該按鈕已附加到通過機器人發送的消息(以 內嵌模式),則字段inline_message_id將存在。字段data或game_short_name的確切一個 將出現。

1
if (($update['message']) != null) { 

} else if ($update['callback_query'] != Null) { 

根據電報文檔:

在大多數的可選參數的一個可存在於任何給定的 更新。

所以你只需要檢查其中哪一個不是空的。