Как получать ответ на сообщение Telegram bot java?
Не могу понять как получать ответ на сообщение. Пример:
Пользователь вводит: /help
Бот отвечает: Введи свое имя:
Пользователь отвечает: Вася //Вот здесь не пойму, Как считать ответ?
Бот отвечает: Спасибо!
Webhook не использую.
Шлю запросы через библиотеку: https://github.com/pengrad/java-telegram-bot-api
Тоже когда начинал, решал такую проблему. Решить можно префиксом к команде. Допустим, бот пишет:
Привет! Пожалуйста, введи свое имя таким образом: name Vasya.
Дальше каждое сообщение проверяешь на префикс. Если есть - отбрасывешь его и берешь имя.
На мой вопрос ответили, что можно в базе данных хранить состояние для каждого chat_id, и в зависимости от состояния, обрабатывать сообщение уже как ответ. Потом же можно возвращать состояние или присвоить какое-нибудь другое состояние пользователю, давшему ответ. Я так и буду делать.
Да неудобно ведь. Это надо мучаться с глобальной переменной или внешним источником, по типу базы данных. Еще есть вариант через id сообщения (или обновления), он обновляется с шагом 1.
mike153: Я искал еще ответы на похожие вопросы, везде они одинаковые и такого же плана (в базе данных хранить состояние для каждого chat_id...). Я сам не придумал пока ничего другого. Я использую Webhook. Вы же используете GetUpdates. Ну а если через id сообщения, то как вы будете знать, что именно это ответ? Вот с состояниями хотя бы всё ясно. Сначала дописать методы, класс, для работы с базой данных (я пока взял готовый с хабра). Сделать это конечно морока, но потом можно будет чётко отлавливать сообщения и понимать, на какой вопрос они были даны и ответы ли это вообще, само собой.
mike153: Для webhook нужен хостинг и SSL сертификат (я на PHP делаю), может можно и проще как-нибудь, но я предпочел такой вариант. За хостинг плачу 1$ в месяц, а ssl там подключается в один клик. И разрабатываю сколько влезет:)
mike153: Проще в плане того, что не нужно обновления запрашивать.
Если пользователь отправил что-то, то оно приходит тут же на файл php, который был задан. А внутри уже ответ считывается и с ним делается, что нужно.