2016-09-01 60 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) { 

根据电报文档:

在大多数的可选参数的一个可存在于任何给定的 更新。

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