如何在电报机器人中使用 ForceReply

How to use ForceReply in a telegram bot

我正在使用 php 和网络挂钩开发电报机器人。一切都很好,但有时我想 "wait for a reply" 来自用户。例如:

如果客户端写入 /info 时没有任何参数,我想显示 "usage" 消息并询问并等待 ID 参数。

我知道有一个 属性 "ForceReply" 强制回复,但是当我设置它时没有任何反应,我不知道如何知道客户端消息是否是回答我的问题。

我必须暂停 php 服务器吗? (我认为这是一种不好的做法)我是否必须等待某种类型的消息?

谢谢

当您使用 getUpdates 或通过 webhook 接收更新时,更新消息将包含类似 reply_to_message 字段的字段。您可以使用它来将它与您发送的消息进行比较。

如果您是 运行 通过 webhook 编写的脚本,我会假设它仅在收到消息时执行。如果是这样,我建议您使用 memcache/redis 之类的东西来存储您期望回复的消息,然后当回复到来时,您可以将它与存储的值进行比较:

<?php
// This script triggers as a webhook
$message = file_get_contents('php://input');
$message = json_decode($message, true);
$cache = new RedisClient('localhost');

if ($message->reply_to_message == $cache->get('original.message.id'))
{
    var_dump('message reply received');
}

上面的示例是一些 "pseudo" 代码,您可以在 webhook 中使用这些代码来检查对特定消息的回复。