winrunner
@winrunner
Кратко обо мне

Как отслеживать просто текст TelegramBot?

Использую библиотеку TelegramBot\Api. Могу получать команды, но не могу получать просто текст. Как можно это сделать?
$bot = new \TelegramBot\Api\Client($token);
$botApi = new \TelegramBot\Api\BotApi($token);

$bot->command('start', function($message) use ($bot) {
        $chatId = $message->getChat()->getId();
        $answer = "Здравствуйте!";
        $bot->sendMessage($chatId, $answer);
});

$bot->run();


И еще вопрос, как сделать регистрацию? В базу данных могу писать данные, сделал небольшое логирование. Чтобы например после ввода /register, попросить логин и когда пользователь напишет, отследить что он написал именно после команды /register.
Пока сделал так, но хотелось бы чтобы команда и сам логин были в разных сообщения.
$bot->command('register', function($message) use ($bot) {
        $chatId = $message->getChat()->getId();
        $text = $message->getText();
        $param = str_replace('/register', '', $text);
        $answer = 'Укажите пожалуйста логин';
        if(!empty($param)) {
            $answer = "Ваш логин: $param";
        }
        $bot->sendMessage($chatId, $answer);
});

Заранее благодарю всех откликнувшихся.
  • Вопрос задан
  • 181 просмотр
Решения вопроса 1
@pembrock
Текст можно получить таким образом:
$body = json_decode($bot->getRawBody(), true);
$message = isset($body['message']['text']) ? mb_strtolower($body['message']['text']) : '';


По поводу регистрации, можно, например, после ввода команды /register в БД хранить какой то флаг, который будет значить что пользователь ввел эту команду и соответственно сейчас он вводит логин.
Грубо говоря, до ввода команды запись в БД выглядит так:
user_id|reg_process
123    | 0

В этот момент считается что пользователь вводит все что угодно кроме логина.
Пользователь вводит команду /register и запись в таблице принимает вид:
user_id|reg_process
123    | 1

В этот момент считается что пользователь вводит только логин и каждое его сообщение обрабатывается какой то функцией по проверке логина.
Соответственно, при каждом полученном сообщении у вас идет проверка reg_process для конкретного user_id.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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