Переклад цього гайду зʼявиться незабаром. Поки що текст доступний російською — перемкніться на RU або читайте нижче. Відкрити російську версію

Просунуте

Безпека

## Безопасность Безопасность — критически важный аспект любого Telegram-бота. Основные принципы защиты включают правильную работу с токеном бота, использование HTTPS, обработку ошибок и защита от несанкционированного доступа. ### Авторизация и токены Для работы с API бота необходимо хранить токен в переменной окружения `TELEGRAM_BOT_TOKEN`. Все запросы отправляются на `https://api.telegram.org` через HTTPS — это гарантирует зашифрованную передачу данных. Токен передаётся в заголовке `Authorization` или в теле запроса в формате `BOT_TOKEN=your_token`. Инициализируйте бота через @BotFather, затем скопируйте токен. Для получения вашего собственного идентификатора используйте функцию `telegramApi()` (см. [Первый запрос: getMe](https://telegram-bot-api/first-request)):
$url = "https://api.telegram.org/bot" . getenv("TELEGRAM_BOT_TOKEN") . "/getMe";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Content-Type: application/json",
"Authorization: Bearer " . getenv("TELEGRAM_BOT_TOKEN")
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
echo $data->id;
### Хэндлер обновлений и долговая опрос (Long Polling) Для получения событий от пользователей используйте механизм **long polling**. Бот постоянно опрашивает сервер, пока нет новых обновлений. Это снижает нагрузку на сеть и повышает отзывчивость. Реализуйте обработку `update_id` и `callback_data` для реакции на действия пользователей. Пример обработки входящего обновления:
function handleUpdate($update) {
if ("update_id" === "123456789") {
// Обработка конкретного события
if (strpos($update->type, "message") !== false) {
// Новое сообщение от пользователя
$this->sendMessage($update.from.chat.id, "Вы написали: " . $update.message.text);
}
}
}
### Обработка ошибок и валидация Всегда проверяйте HTTP-статус ответа (`200 OK`) и поле `ok` в JSON-ответе. При ошибках сервера используйте `json_last_error()` для диагностики проблем. Для безопасной обработки payload'ов применяйте `validateAndParsePayload()` (см. [Deep links](https://telegram-bot-api/deep-links)). ### Ротация токена и безопасность приложения Если токен утек, немедленно создайте нового бота через BotFather и обновите `TELEGRAM_BOT_TOKEN` в коде. Используйте статические переменные или конфигурационные файлы вместо жестко прописанных строк в коде. Для продакшн-развёртывания рекомендуется внедрять retry-логику и очереди обработки запросов (см. [Production: очередь и retries](https://telegram-bot-api/production)). ### Дальше: Production: очередь и retries Для высоконагруженных систем рекомендуется использовать очереди (Redis, RabbitMQ) и автоматический повтор попыток при временных сбоях. Дальше: Production: очередь и retries