如何区分“消息”更新和“回调查询”更新? (电报机器人 API)
Posted
技术标签:
【中文标题】如何区分“消息”更新和“回调查询”更新? (电报机器人 API)【英文标题】:How can I differentiate between a 'Message' update and a 'Callback Query' update? (Telegram Bot API) 【发布时间】:2017-01-08 22:00:43 【问题描述】:对不起,如果我的问题太混乱了,我是新来的,所以,欢迎任何建议。
如何区分“消息”更新和“回调查询”更新? 我已经设法制作了一个内联键盘,但是当我使用它时,机器人只是挂起,他没有回复任何内容。我做了一些研究,发现了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。如果我想要处理它们,我可以使用这样的东西(基于另一个问题的答案):
$callback_query = $update["callback_query"]
/* same as above */
但是如何判断是消息还是回调查询呢?
【问题讨论】:
【参考方案1】:if (($update['message']) != null)
else if ($update['callback_query'] != Null)
根据电报文档:
在任何给定的参数中最多可以存在一个可选参数 更新。
所以你只需要检查其中哪一个不是 Null。
【讨论】:
【参考方案2】:您可以简单地检查 CallbackQuery 是否为空。 请参阅 Telegram 文档:
CallbackQuery
此对象表示来自回调的传入回调查询 内联键盘中的按钮。如果发起查询的按钮 附加到机器人发送的消息中,字段消息将是 展示。如果按钮附加到通过机器人发送的消息(在 内联模式),字段 inline_message_id 将出现。正是一个 的字段 data 或 game_short_name 将出现。
【讨论】:
以上是关于如何区分“消息”更新和“回调查询”更新? (电报机器人 API)的主要内容,如果未能解决你的问题,请参考以下文章