【问题标题】:Get message_id of Telegram bot sendPoll message php获取 Telegram bot sendPoll 消息 php 的 message_id
【发布时间】:2020-03-18 10:55:38
【问题描述】:

我用 PHP 编写了一个 Telegram 机器人。

在 sendPoll 方法启动后,它需要等待 10 秒以等待用户回答 - 如果用户没有回答,机器人将使用方法 stopPoll 关闭此投票。 (貌似是 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");
            }

你可以看到我保存了最后一个callbackbuttonmessage_id,它以Poll 开头,并为stopPoll +2(+1 表示“你准备好”消息,+1 表示最后一个@ 987654331@消息)。它可以工作,但如果用户在机器人关闭投票之前发送任何消息,则会出现异常 - message_id 错误且 stopPoll 无法正常工作。

请告诉我怎样才能使这段代码工作?

【问题讨论】:

    标签: php bots telegram


    【解决方案1】:

    我找到了解决方案,发送消息(或投票)

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

    返回有关此操作的所有信息(chat_id、message_id、poll_id 等); 您可以通过保存 $info 来获取所有信息;

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 2017-11-28
      • 2017-02-25
      • 2017-07-04
      • 2022-08-18
      • 2016-01-31
      • 2019-03-09
      • 1970-01-01
      • 2017-08-07
      相关资源
      最近更新 更多