Получить message_id бота Telegram sendPoll message php - PullRequest
0 голосов
/ 24 февраля 2020

Я написал бота Telegram с PHP.

После загрузки метода sendPoll нужно подождать 10 секунд ответа пользователя - если пользователь не ответил, бот закрывает этот опрос методом stopPoll. (Похоже на официальный Telegram @quizbot)

Я использую webhooks - для закрытия опроса требуется stopPoll метод message_id, и я не знаю, как получить message_id последней sendPoll сообщение, чтобы сохранить его в MySQL БД.

case '/sendpoll':
    $i = '';
    switch($i){ 
        case 0:
            $stt->sendteleg($data = ['text'=>"Are you ready? \xF0\x9F\x9A\x80"], $chat_id_call, "sendMessage");
            sleep(2);
            $dataSend = getpollquestions(0,6);
            $stt->sendteleg($dataSend, $chat_id_call, "sendPoll");
            $hasstate =$dbconn->hasuserstate($user_id_call);
            if($hasstate){
            $dbconn->updatestate($user_id_call,$message_id_call,'wait','poll');
            }else {$dbconn->adduserstate($user_id_call,$message_id_call,'wait','poll');}
            $state = $dbconn->getuserstate($user_id_call);
            $statebolim = explode("-_-",$state);
            sleep(10);
            $datalimit = gettimeplus10($statebolim[2]);

            if($datalimit){
            $dat = [
            'message_id' => json_encode($statebolim[0]+2)];
            $stt->sendteleg($dat, $chat_id_call, "stopPoll");
            }

Вы можете видеть, что я сохраняю message_id последнего callbackbutton, который начинается Poll в БД и +2 его для stopPoll (+1 для сообщения «Готовы ли вы» и +1 для последнего sendPoll сообщения). Это работает, но есть исключение, если пользователь отправляет какое-либо сообщение до того, как бот закрывает опрос - message_id неверно и stopPoll не работает.

Скажите, пожалуйста, как я могу заставить этот код работать?

1 Ответ

0 голосов
/ 18 марта 2020

я нашел решение, отправив сообщение (или опрос) с помощью

$info = file_get_contents($bot_url."/sendPoll?" .http_build_query($dataSend));

возвращает всю информацию об этом действии (chat_id, message_id, poll_id et c); Вы можете получить всю информацию, сохранив $ info;

...