Я написал бота 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
не работает.
Скажите, пожалуйста, как я могу заставить этот код работать?