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

Как реализовать следующий функционал бота Telegram?

Не могу разобраться, как организовать следующий функционал бота Telegram:

  1. Клиент отправляет боту команду, условно /command1
  2. Бот запрашивает дополнительную информацию, ждет ответа
  3. Клиент отправляет, условно какой-то текст
  4. Бот отправляет клиенту обработанный результат


Бот представляет собой php-скрипт на удаленном сервере, логично в этом случает выглядит обработка запросов клиента через Webhook. Но это одиночный запрос-ответ. А как реализовать пункты 2 и 3, не могу толком разобраться.
  • Вопрос задан
  • 537 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
riot26
@riot26
<:З )~~
Хранить состояние пользователя. Таблица users:
login  | state            | name   | age
------------------------------------------------
vasya  | new              | NULL   | NULL
petya  | waiting_for_name | NULL   | NULL
vanya  | waiting_for_age  | Иван   | NULL
misha  | all_data_given   | Михаил | 46

набросок кода для понимания:
if ($current_user_state == 'new') {
    echo 'What\'s your name?';
    setCurrentUserState('waiting_for_name');
} else if ($current_user_state == 'waiting_for_name') {
    echo 'Hello, ' . $user_message . '!';
    setCurrentUserState('waiting_for_age');
} else if ($current_user_state == 'waiting_for_age') {
    echo 'Oh, you are ' . $user_message . '! You\'re so damn old';
    setCurrentUserState('all_data_given');
}
Ответ написан
trak_ivan
@trak_ivan
У меня подобное было, когда в бот вставлял переводчика.
И мне нужно было, чтобы когда человек находился в переводчике, при вводе текста выполнялся перевод, а к примеру не выполнение какой то команды. Соответственно, проверяю его текущее состояние перед обработкой текста и все.
Создал БД, в котором для каждого chatid хранил этап на котором он находится.(2 колонки chatid и status).
1- это одно меню, 2- второе и так далее. При команде старт к примеру 1 дается (chatid 1029123 status 1), тыкнул в переводчик в меню получил статус 2 (chatid 1029123 status 2), вернулся в главное меню поулчил 1 (chatid 1029123 status 1).

Вот можешь посмотреть работу: @ readytospeakbot, но он недоделанный и клавиатуру не прячу пока что. Но переводчик работает и проверяет состояние, можешь проверить.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы