Я пытаюсь написать бота в Telegram для магазина в боте Telegram пользователь может выбрать продукт, оплатить счет и получить продукт. у нас есть раздел в боте для пользователей, которые хотят стать реселлерами. для регистрации в качестве реселлера пользователь должен выполнить 4 задания: 1 — создать кошелек метамаски (проверка: публичный адрес) 2 - создать учетную запись на нашем сайте (проверка: идентификатор пользователя на сайте) 3 – купить товар на сайте (проверка: идентификатор счета) 4 – отправьте форму на нашем сайте (проверка: идентификатор пользователя на сайте)
у нас есть кнопка, когда пользователь нажимает, и мы показываем пользователю новое сообщение с 4 встроенными кнопками. при нажатии на кнопку 1 пользователю отправляется новое сообщение с видео и описанием того, что пользователь должен сделать. под сообщением у нас есть кнопка с именем: проверить Я хочу, чтобы, когда пользователь нажимает кнопку «Подтвердить», робот отправляет новое сообщение и говорит что-то после того, как пользователь отправляет запрос проверки, а робот проверяет его.
я написал код, но есть на валидаторе после нажатия кнопки «Подтвердить» мы отправили сообщение и показали пользователю, что нам нужно для этого шага (например, адрес кошелька), но я не знаю, как узнать от бота, что отправил пользователь. я думаю, нам нужно что-то сделать с предыдущим сообщением или что-то вроде обратного вызова но я не знаю, что делать... Может кто-нибудь мне помочь? я использую библиотеку laravel и telegram-bot-sdk.com
я использовал базу данных для хранения состояний пользователей сначала после того, как пользователь нажимает кнопку «Начать процесс», мы создаем новую запись для этого пользователя (перед этим мы проверяем, присоединился ли пользователь к боту и каналу или нет, а также завершил ли пользователь регистрацию в боте) после этого мы обрабатываем шаги и проверяем ответы пользователей на наличие нужных нам значений например :
if (preg_match('/^(0x)?[0-9a-fA-F]{40}$/' , $this->Data['message']['text'])){
$WalletAddress = $this->Data['message']['text'];
//get user wallet and store data ....
}
здесь, когда пользователь отправит адрес кошелька роботу, вы получите ответ и мы добавим if/else и проверим состояние пользователя в БД. Если пользователь не прошел шаг 1, мы получим и проверим ответ для первого шага, и если пользователь прошел шаг 1, мы начнем, шаг 2 работает..... на шаге 3,4 мы можем создать регулярное выражение, потому что идентификатор нашего сайта имеет алгоритм, и мы можем проверить, передал ли пользователь идентификатор пользователя или нет. например :
if (preg_match('/^id\d.alg$[0-9]]/i' , $this->Data['message']['text'])){
мы можем заменить шаблон на шаблон нашего сайта и, в конце концов, если у кого-то есть лучший вариант и стиль кода, я буду рад выслушать ваши слова.