Задать вопрос
@sarkis3

API bot TG — Как мне узнать, на какой вопрос ответили?

Здравствуйте. Впервые сталкиваюсь с телеграмм api.


Человек пишет Боту - /start
Бот отвечает - Напиши название своего Города
Человек пишет Боту - Москва
Бот отвечает - Напиши название своей улицы
Человек пишет Боту - Большая садовая


Подскажите, каким образом я могу понять, на какой вопрос отвечает пользователь ?
Т.е как мне присваивать команды каждому вопросу или нужно обязательно кнопки (inline_keyboard) добавлять ?
  • Вопрос задан
  • 253 просмотра
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 4
sergiks
@sergiks Куратор тега PHP
♬♬
По-простому, костыльному, можно предполагать, что очередная реплика пользователя, которая не-команда типа /start (начать сначала) или какой-нибудь /edit (допустим, исправить последний ответ) – это ответ на следующий по порядку вопрос. В базе данных сохраняйте под id пользователя его ответы, заполняя каждый раз следующий пустой вопрос, например. Эт. совсем упрощенно-колхозно.

Для адреса, наверное, можно предлагать не вводить название, а тыкнуть точку на карте — прислать location, как вариант.

По-крутому, можно сделать нормальное веб-приложение, хороший интерфейс, форму с полями, валидацией и подсказками. См. WebApp в Telegram.
Ответ написан
Комментировать
kawabanga
@kawabanga
На уровне бэка добавляете режим ожидания.

Человек пишет Боту - /start

Бот показывает меню, или переходит в режим активации регистрации. Вы на беке записываете, что в течении 1 минуты мы ожидаем от пользователя название города или сервисную команду /start . Причем сервисными командами надо научить бэк сбрасывать ожидание.

Бот отвечает - Напиши название своего Города

Ставим ожидание команды - город.

Человек пишет Боту - Москва
Бот отвечает - Напиши название своей улицы

Переходим в ожидание улицы

Человек пишет Боту - Большая садовая

Ну дальше понятно думаю.

Самый простой способ сделать такое ожидание - это кэширующая функция в вашем фреймворке на 1-2 минуты.
Ответ написан
Комментировать
@alekssamos
Программист любитель
Нужна база данных или какой-нибудь редис. И туда всё писать. У меня есть решение, специально для бесплатных хостингов, просьба профессионалов не критиковать, я знаю.
нажми сюда
И просто по ключу "state".$chat_id записываешь и проверяешь, проверять можешь через switch case
Ответ написан
Комментировать
@Nikidzawa
Нужно реализовать стейт машину. Почитай про паттерн state. Хранить состояние рекомендую в Redis.
На фрилансе много таких проектов делал - аля дайвинчик.

Мог бы пример кинуть крутого бота с 70 состояниями, который мгновенно O(1) определяет что ты от него хочешь, но он написан на жабе)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽