#php #telegram-bot
#php #telegram-бот
Вопрос:
у меня этот код работает нормально, я получаю данные обратного вызова и отвечаю пользователю сообщением. дело в том, что встроенная кнопка продолжает показывать круг загрузки в течение нескольких секунд даже после того, как ответ был отправлен пользователю. может ли это быть ошибкой? или я делаю что-то не так?
elseif ($update amp;amp; isset($update["callback_query"]))
{
//file_put_contents('php://stderr', print_r($output , TRUE));
$callback_query = isset($update['callback_query']) ? $update['callback_query'] : "";
$chat_id = $update["callback_query"]['message']['chat']['id'];
$data = $update["callback_query"]["data"];
$callbackQueryID = $update["callback_query"]['id'];
$this->answerCallbackQuery($callbackQueryID);
switch($data){
case 'someString':
$this->sendMessage([
'chat_id' => $chat_id,
'text' => 'string one was called'
]);
break;
case 'someString2':
$this->sendMessage([
'chat_id' => $chat_id,
'text' => 'stiring 2 was called '
]);
break;
}
} // ======= END ELSEIF CALLBACKQUERY
Ответ №1:
У меня была та же проблема. После поиска на некоторых форумах, а также в документации Telegram я нашел решение. Вы должны использовать эту функцию, называемую answerCallbackQuery. Вы должны вызвать этот метод после выполнения кода, связанного с вашей кнопкой.
Вот как я использовал эту функцию
$webSite = 'https://api.telegram.org/bot'.$botToken;
function answerCallbackQuery($callbackId){
$url = $GLOBALS['webSite']."/answerCallbackQuery?callback_query_id=$callbackId";
file_get_contents($url);
}
В этом случае я только передал like params callbackQueryId, потому что я не хочу отвечать на кнопку, а только удалить значок загрузки.
Я надеюсь, что это поможет вам и решит ваши проблемы