簡體   English   中英

獲取電報機器人 sendPoll 消息 php 的 message_id

[英]Get message_id of Telegram bot sendPoll message php

我用 PHP 編寫了一個 Telegram 機器人。

在 sendPoll 方法啟動后,它需要等待 10 秒讓用戶回答——如果用戶沒有回答,機器人會使用stopPoll方法關閉這個 Poll。 (看起來像 Telegram 的官方 @quizbot)

我使用 webhooks - stopPoll方法需要message_id選項來關閉輪詢,我不知道如何獲取最新的sendPoll消息的message_id以便將其存儲在 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");
            }

您可以看到我保存了在數據庫中啟動Poll的最后一個callbackbutton stopPoll message_id並為stopPoll +2(+1 表示“你准備好了嗎”消息,+1 表示最后的sendPoll消息)。 它正在工作,但如果用戶在機器人關閉 Poll 之前發送任何消息,則會出現異常 - message_id錯誤且stopPoll不起作用。

請告訴我如何使此代碼工作?

我找到了解決方案,發送消息(或輪詢)

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

返回有關此操作的所有信息(chat_id、message_id、poll_id 等); 您可以通過保存 $info 來獲取所有信息;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM