Improve error handling for Fast API calls in Telegram bot
This commit is contained in:
@@ -190,12 +190,42 @@ class TelegramBotController
|
||||
|
||||
TelegramHelper::log("FAST API RESPONSE (HTTP $httpCode): $apiResponse");
|
||||
|
||||
// Check for cURL errors
|
||||
if ($apiResponse === false || $httpCode != 200) {
|
||||
$errorMsg = curl_error($ch) ?? "HTTP Error $httpCode";
|
||||
TelegramHelper::log("FAST API ERROR: $errorMsg");
|
||||
TelegramHelper::sendMenu($chatId,
|
||||
"Terjadi kesalahan saat menghubungi server.\nHTTP Code: $httpCode\nSilakan coba lagi nanti."
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
$res = json_decode($apiResponse, true);
|
||||
|
||||
// Safety check if response failed
|
||||
if (!$res || !isset($res["data"])) {
|
||||
if (!$res) {
|
||||
TelegramHelper::log("FAST API ERROR: Invalid JSON response");
|
||||
TelegramHelper::sendMenu($chatId,
|
||||
"Terjadi kesalahan saat menghubungi server.\nSilakan coba lagi nanti."
|
||||
"Terjadi kesalahan saat menghubungi server.\nResponse tidak valid.\nSilakan coba lagi nanti."
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if response has error status
|
||||
if (isset($res["status"]) && $res["status"] === "error") {
|
||||
$errorMsg = $res["message"] ?? "Unknown error";
|
||||
TelegramHelper::log("FAST API ERROR: " . $errorMsg);
|
||||
TelegramHelper::sendMenu($chatId,
|
||||
"Terjadi kesalahan saat menghubungi server.\nError: $errorMsg\nSilakan coba lagi nanti."
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if data exists
|
||||
if (!isset($res["data"])) {
|
||||
TelegramHelper::log("FAST API ERROR: No data in response. Full response: " . json_encode($res));
|
||||
TelegramHelper::sendMenu($chatId,
|
||||
"Terjadi kesalahan saat menghubungi server.\nData tidak ditemukan.\nSilakan coba lagi nanti."
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user