[英]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.