Forcereply Telegram пример java

Я хотел бы иметь небольшого бота Telegram на python, где команда выдается пользователем, бот задает вопрос и реагирует в зависимости от ответа. В официальном API Telegram упоминается, что это возможно с помощью ForceReply(), например, для создания опросов шаг за шагом, см. Здесь Официальный API Telegram # ForceReply.

Я написал следующий код:

def test_function(update: Update, context: CallbackContext) -> None: msg = context.bot.send_message(chat_id=update.message.chat_id, text=»Please enter some text.», reply_markup=telegram.ForceReply(True)) if __name__ == ‘__main__’: dispatcher.add_handler(CommandHandler(«test», test_function)) updater.start_polling() updater.idle()

Так когда /test выдается пользователем, ему предлагается ввести какой-то текст и из-за ForceReply(True) , пользователь вынужден ответить на сообщение. Но как мне получить результат этого ответа, то есть текст, на который ответил пользователь? В документации API нет намека, и я также потратил некоторое время на поиск в Интернете и на SO, но ничего не нашел. Поэтому, скорее всего, ответ прост и понятен, но я его пока не понимаю.

Creating and using a Telegram Bot with Java

Любая помощь приветствуется.

user12463491 19 ноя ’20 в 20:00 2020-11-19 20:00
2020-11-19 20:00

2 ответа

рамки айограммы уже решили вашу задачу

Каждый шаг — это состояние пользователя.

Это называется FSM ( finite state machine ).

Вам даже не нужно что-то делать с ForceReply .

пример

Источник: stackru.com

используйте опцию ForceReply для получения ввода от пользователя без ответа в телеграмме

Как использовать ForceReply в боте Telegram

Я разрабатываю бот для телеграмм, используя php и веб-крючок. Все нормально, но иногда хочется «дождаться ответа» от пользователя. Например:

Еще по теме:  Как общаться втроем в Телеграмме

Если клиент пишет / info без каких-либо параметров, я хотел бы показать сообщение об использовании, а также запросить и дождаться параметра идентификатора.

Я знаю, что есть свойство ForceReply для принудительного ответа, но когда я его настраиваю, ничего не происходит, и я не знаю, как узнать, является ли сообщение клиента ответом на мой вопрос.

Должен ли я приостанавливать работу моего php-сервера? (Я думаю, это будет плохой практикой) Нужно ли мне ждать какого-то сообщения?

aleksdj 10 Июл 2015 в 00:03

1 ответ

Лучший ответ

Когда вы используете getUpdates или получаете обновления через веб-перехватчик, сообщение об обновлении будет содержать поле, подобное полю reply_to_message . Вы можете использовать это, чтобы сравнить его с отправленным вами сообщением.

Если вы запускаете свой сценарий через веб-перехватчики, я бы предположил, что он выполняется только при получении сообщения. Если это так, я бы посоветовал вам использовать что-то вроде memcache / redis для хранения сообщения, на которое вы ожидаете ответа, а затем, когда он придет, вы можете сравнить его с сохраненным значением:

How to create Telegram Bot in Java


reply_to_message == $cache->get(‘original.message.id’))

В приведенном выше примере показан «псевдокод», который можно использовать в веб-перехватчике для проверки ответа на конкретное сообщение.

Источник: question-it.com

Рейтинг
( Пока оценок нет )
Загрузка ...