• Как оправлять команды у бота Telegram при выборе в меню?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Не пойму, как отлавливать, какую из 3х клавишей нажал?
    и как сделать так, чтобы в меню был один текст, а при нажатии на нее отправлялась к примеру команда?

    С помощью Inline Keyboards, появившемся в Bot API 2.0.
    https://core.telegram.org/bots/2-0-intro#new-inlin...
    https://core.telegram.org/bots/api#inlinekeyboardmarkup

    > Unlike with custom reply keyboards, pressing buttons on inline keyboards doesn't result in messages sent to the chat. Instead, inline keyboards support buttons that work behind the scenes: callback buttons, URL buttons and switch to inline buttons.

    Как на этапе отправки текста, мы знаем, что нам надо перевести текст?

    При приёме сообщения от user_id, бот проверяет, на каком шаге в последний раз остановился этот user_id, и обрабатывает сообщение в рамках текущего шага. Если шаг "перевести" - то в ответ на любое сообщение он переведёт строку. На этапе "перевести" бот просто не показывает никакого меню, он просто ждёт строку.

    Для этого боту делают хранилище сессий. Это может быть просто БД с колонками `user_id` и `state`, где в стэйте будет указан текущий шаг. При обработке сообщения, бот смотрит шаг и действует в соответствии с тем, чего хотел пользователь на этом шаге.
    Если пользователь запросил другую функцию, или сделал /cancel, поменять шаг в таблице.
    Ответ написан
    8 комментариев