Есть бот-помощник, отвечающий на вопросы. Принцип работы - типа квеста, бот отвечает и выводит новые кнопки. Все работает нормально, кроме 2х моментов:
1. После 10-20 кликов по кнопкам (промежуток в 5 сек) бот виснет минут на 5. В ответе API только false. Зависание происходит рандомно и может произойти на любом шаге. Кто-нибудь сталкивался с этим?
2. Не работает remove_keyboard
Часть кода бота:
function get_updates($token) {
$content = file_get_contents("php://input");
$update = json_decode($content, TRUE);
file_put_contents('bot.log', json_encode($content));
$message = $update["message"];
return $update;
}
function get_api_url($token) {
$api_url = "https://api.telegram.org/bot".$token;
return $api_url;
}
function send_message($message, $keyboard = false) {
global $data;
global $api_url;
global $update;
if ($update['callback_query'])
$params['chat_id'] = $update['callback_query']['message']['chat']['id'];
else
$params['chat_id'] = $data["chat"]["id"];
$params['text'] = strip_tags($message);
if ($keyboard !== false) {
$params['reply_markup'] = json_encode([
'keyboard' => $keyboard,
'resize_keyboard' => true,
'one_time_keyboard' => true
]);
}
else {
$params['reply_markup'] = json_encode([
'remove_keyboard' => true
]);
}
$result = file_get_contents($api_url.'/sendmessage?'.http_build_query($params));
file_put_contents('send.log', json_encode($result));
}
$token = "1234";
$update = get_updates($token);
$data = $update['message'];
$api_url = get_api_url($token);
$user_message = $data["text"];
$user = get_user_info();
$callback = $update['callback_query']['data'];
// пример отправки сообщения
if ($user_message == 'текст_кнопки' && /* дополнительные условия */) {
$message = "сообщение";
$keyboard = [
['1'],
['2']
];
send_message($message, $keyboard);
}