Старт

Перший запит: getMe

Базовый URL Bot API:

https://api.telegram.org/bot<TOKEN>/<METHOD>

Самый безопасный «пинг» — метод getMe: он не шлёт сообщения пользователям и сразу показывает, жив ли токен.

Пример на PHP (cURL)

function telegramApi(string $token, string $method, array $params = []): array
{
    $url = 'https://api.telegram.org/bot' . $token . '/' . $method;
    $ch = curl_init($url);
    curl_setopt_array($ch, [
        CURLOPT_POST           => $params !== [],
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT        => 15,
        CURLOPT_HTTPHEADER     => ['Content-Type: application/json'],
        CURLOPT_POSTFIELDS     => $params === [] ? null : json_encode($params, JSON_UNESCAPED_UNICODE),
    ]);
    $body = curl_exec($ch);
    $code = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $err  = curl_error($ch);
    curl_close($ch);

    if ($body === false) {
        throw new RuntimeException('Network error: ' . $err);
    }
    $data = json_decode($body, true);
    if (json_last_error() !== JSON_ERROR_NONE) {
        throw new RuntimeException('Invalid JSON: ' . json_last_error_msg());
    }
    if ($code >= 400 || empty($data['ok'])) {
        throw new RuntimeException('Telegram error: ' . ($data['description'] ?? ('HTTP ' . $code)));
    }
    return $data['result'];
}

$me = telegramApi(getenv('TELEGRAM_BOT_TOKEN'), 'getMe');
// id, is_bot, first_name, username, ...

На что смотреть в ответе

  • ok: true и объект result — успех;
  • Telegram часто отдаёт HTTP 200 даже при ok: false — всегда читайте поле ok;
  • ошибка авторизации — почти всегда битый или отозванный токен.

Дальше: получите апдейты через getUpdates или сразу настройте webhook.