aleksdj
aleksdj

Reputation: 145

How to use ForceReply in a telegram bot

I'm developing a telegram bot using php and a web hook. All it's fine but sometimes I would like to "wait for a reply" from the user. For example:

If the client write /info without any parameters I would like to show a "usage" message and ask&wait for a ID parameter.

I know there is a property "ForceReply" to force for a reply, but when I set it up nothing happens, and I don't know how to know if the client message its a reply for my question.

Do I have to put my php server on hold? (I think it would be a bad practice) Do I have to whait for a type of message?

Thanks

Upvotes: 1

Views: 5652

Answers (1)

Chris Brand
Chris Brand

Reputation: 1990

When you use getUpdates or receive updates via a webhook, the update message will contain a field like reply_to_message field. You can use this to compare it to the message you sent.

If you are running your script via webhooks I would assume that it only executes when it receives a message. If so, I would suggest you use something like memcache/redis to store the message you are expecting a reply for and then when the reply comes, you can compare it to the value stored:

<?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');
}

The example above is some "pseudo" code that you can use in a webhook to check for a reply to a specific message.

Upvotes: 1

Related Questions