@Alexey09Frolov

Как заставить бота tg на лету проверять обновились ли данные юзера в бд без отправки ему сообщения?

всем привет! при первом обращении к боту, все данные юзера записываются в бд и назначается статус "2", т.е заблокирован.есть код
$sth = $db->prepare("SELECT * FROM `user` WHERE `tg_id` = :tg_id");
    $sth->execute(array('tg_id' => user_chat_id()));
    $bd_user = $sth->fetch(PDO::FETCH_ASSOC);
    if($bd_user['status'] == 2)
    {
        $sth = $db->prepare("UPDATE `user` SET `stage` = 'gen_request'  WHERE `tg_id` = :tg_id");
        $sth->execute(array('tg_id' => user_chat_id())); 
        $text = "Откуда Вы о нас узнали?";
        send_tg_text($text, null);

    }
    if($bd_user['stage'] == "gen_request")
    {
        $sth = $db->prepare("UPDATE `user` SET `status` = '3'  WHERE `tg_id` = :tg_id");
        $sth->execute(array('tg_id' => user_chat_id())); 
    }

если статус 2, то запускаю подачу заявки, сразу при первом /start боту получается отправляет на заявку и меняет в бд "stage" => gen_request, сразу создаю условие чтоесли у пользователя стоит этот gen_request (то есть он заполняет заявку), убрать статус 2 и дать временный статус "3". тут возникает проблема, после первого /start сразу первый вопрос заявки и сразу меняется "stage", но бот пока об этом не знает, и отвечая на первый вопрос получается такая ситуация:

Я: /start
БОТ: Откуда вы у она узнали?
Я: Реклама
БОТ: Откуда вы у она узнали?
БОТ: Второй вопрос заявки?

Бот узнает о том что данные обновились только после отправки ему сообщения.( как можно выйти с этой ситуации?
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ответы на вопрос 1
Noizefan
@Noizefan
Не читал подробно, по названию вопроса ясно, что твой код триггерится на сообщение.
Так заставь его работать демоном и проверять что тебе нужно всегда
Намекну - cron
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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