Ошибки Telegram Bot API

В разделе собраны тексты и коды ошибок, которые можно получить при запросе в Telegram Bot API. А так же способы их решения.

Ошибки Telegram Bot API

Собрали все основные ошибки которые могут вам встретиться при работе с Telegram Bot API. Если вы знаете еще какие то ошибки то пожалуйста сообщите нам в комментариях или в чате @botphp_ru и добавим эту ошибку на эту страницу.

Unauthorized

Описание: Неверный токен бота. Это может произойти, если токен был введен неправильно или если он был отозван.

Код ошибки: 401.

Как исправить:

  • Проверьте, правильно ли указан токен бота. Убедитесь, что вы скопировали его без лишних пробелов или символов.
  • Если токен верен, попробуйте сгенерировать новый токен в боте @BotFather. Для этого отправьте команду /revoke, чтобы отозвать текущий токен, а затем используйте команду /newbot для создания нового токена.
  • Убедитесь, что ваш бот активен и не заблокирован Telegram. Иногда боты могут быть временно отключены за нарушение правил.
  • Проверьте, используете ли вы правильный API URL. Убедитесь, что он соответствует формату https://api.telegram.org/bot<ваш_токен>/метод.

Метод: Любой.


{
  "ok": false,
  "error_code": 401,
  "description": "Unauthorized"
}

Bad Request: chat not found

Описание: Данный чат боту неизвестен. Это может произойти, если вы пытаетесь отправить сообщение в чат, который не существует или к которому у бота нет доступа.

Код ошибки: 400.

Как исправить: Проверьте правильно ли указан чат в запросе. Убедитесь, что идентификатор чата (chat_id) указан верно. Если вы используете username, убедитесь, что он начинается с "@" и корректен. Также проверьте, имеет ли бот необходимые права доступа к данному чату, каналу или группе. Если чат был удалён или заблокирован, это также приведёт к ошибке.

Метод: Любой.


{
  "ok": false,
  "error_code": 400,
  "description": "Bad Request: chat not found"
}

Дополнительные рекомендации: Если вы работаете с группами, убедитесь, что бот добавлен в группу и имеет права на отправку сообщений. Для каналов проверьте, что бот является администратором канала. В случае использования API для работы с пользователями, убедитесь, что бот имеет разрешение на отправку сообщений этому пользователю.

Bad request: user not found

Описание: Не верно указан user_id. Это может произойти, если вы пытаетесь отправить сообщение пользователю, который не является вашим подписчиком, или если указанный user_id был введен с ошибкой.

Код ошибки: 400.

Как исправить: Проверьте "user_id" на наличие опечаток. Убедитесь, что пользователь, которому вы пытаетесь отправить сообщение, действительно существует и является вашим контактом. Также проверьте, что вы используете правильный идентификатор, так как user_id может изменяться в зависимости от настроек приватности пользователя.

Метод: Любой.


{
  "ok": false,
  "error_code": 400,
  "description": "[Error]: Bad Request: user not found"
}

Forbidden: user is deactivated

Описание: Вы пытаетесь выполнить действие с учетной записью пользователя, которая была деактивирована или удалена. Это может произойти, если пользователь сам отключил свою учетную запись или если она была удалена администратором.

Код ошибки: 403.

Как исправить: Проверьте "user_id". Убедитесь, что пользовательская учетная запись активна. Вы можете сделать это, отправив запрос на получение информации о пользователе. Если учетная запись была деактивирована, вам необходимо уведомить пользователя о необходимости повторной активации своей учетной записи.

Метод: sendMessage.


{
  "ok": false,
  "error_code": 403,
  "description": "Forbidden: user is deactivated"
}

Дополнительные рекомендации: Если проблема сохраняется, проверьте, не заблокирован ли ваш бот пользователем. Также убедитесь, что ваш бот имеет соответствующие разрешения для отправки сообщений пользователям. Если вы используете вебхуки, проверьте, правильно ли настроены URL и доступ к вашему серверу.

Forbidden: bot was kicked

Описание: Вашего бота заблокировали. Это может произойти, если бот был удалён или заблокирован администратором группы, в которой он находился, или если он не имеет достаточных прав для выполнения запрашиваемого действия.

Код ошибки: 403.

Как исправить: Не пытайтесь отправить сообщение в данном чате или группе. Убедитесь, что бот всё ещё является участником группы и имеет необходимые права доступа. Если бот был удалён, попросите администратора группы вернуть его обратно. Также проверьте настройки конфиденциальности бота и убедитесь, что он настроен на взаимодействие с пользователями и группами.

Метод: sendMessage.


{
  "ok": false,
  "error_code": 403,
  "description": "Forbidden: bot was kicked from the group chat"
}

Forbidden: bot blocked by user

Описание: Пользователь заблокировал бота. Это может произойти, если пользователь решил, что не хочет получать сообщения от бота, или если бот отправил нежелательное или спам-сообщение.

Код ошибки: 403.

Как исправить: Не писать пользователю. Если бот был заблокирован, вы не сможете отправлять ему сообщения до тех пор, пока он не разблокирует бота. Рекомендуется улучшить качество контента и взаимодействия с пользователями, чтобы избежать блокировок в будущем. Также стоит рассмотреть возможность предоставления пользователю простой инструкции о том, как разблокировать бота.

Метод: Любой.


{
  "ok": false,
  "error_code": 403,
  "description": "Forbidden: bot was blocked by the user"
}

Рекомендации: Проверьте, насколько ваш контент соответствует ожиданиям пользователей. Опросы, обратная связь и анализ поведения пользователей могут помочь в улучшении взаимодействия. Также рассмотрите возможность использования кнопок и меню для более удобного взаимодействия, чтобы снизить вероятность блокировок.

Forbidden: bot can't send messages to bots

Описание: Вы пытались отправить сообщение другому боту. Это невозможно сделать, так как Telegram API ограничивает взаимодействие между ботами для предотвращения спама и злоупотреблений.

Код ошибки: 403.

Как исправить: Не отправляйте сообщения другим ботам. Убедитесь, что вы используете правильный chat_id для пользователя или группы, а не для другого бота. Также проверьте, что поле is_bot в данных "from" соответствует ожиданиям (должно быть false для обычных пользователей).

Метод: sendMessage.

{  "ok": false,  "error_code": 403,  "description": "Forbidden: bot can't send messages to bots"}

Дополнительные рекомендации: Если необходимо взаимодействовать с другим ботом, рассмотрите возможность использования вебхуков или API, предоставляемых этим ботом, если они доступны. Также убедитесь, что вы следуете правилам и рекомендациям Telegram для разработчиков ботов.

Too many requests

Описание: Слишком много запросов от бота.

Код ошибки: 429.

Как исправить: Бот достигает лимитов, как этого избежать? При отправке сообщений в чате старайтесь не отправлять более одного сообщения в секунду. Также учтите, что вашему боту не удастся отправить более 20 сообщений в минуту в одну группу. Официальное FAQ. На стороне обработки API можно при получении ошибки "выключать" бота на время, указанное в поле "retry_after". Время указано в секундах. Кроме того, рассмотрите возможность реализации механизма очереди для управления отправкой сообщений. Это поможет избежать превышения лимитов и обеспечит более плавный пользовательский опыт. Используйте асинхронные вызовы и обработку событий, чтобы оптимизировать работу вашего бота. Также полезно следить за статистикой использования API, чтобы заранее прогнозировать и управлять нагрузкой. Если ваш бот активно взаимодействует с пользователями, подумайте о распределении нагрузки между несколькими ботами или оптимизации логики отправки сообщений, чтобы минимизировать количество запросов.

Метод: sendMessage.


{
  "ok": false,
  "error_code": 429,
  "description": "Too Many Requests: retry after X",
  "parameters": { "retry_after": 123 }
}

Bot is not a member of the channel chat

Описание: Бот не является участником группы обсуждения на канале.

Код ошибки: 403.

Причина ошибки: Эта ошибка возникает, когда вы пытаетесь отправить сообщение на канал, который имеет прикрепленную группу для обсуждения, и бот не добавлен в эту группу. Это может произойти, если бот был недавно добавлен, и требуется время для обновления его статуса.

Как исправить: Чтобы успешно опубликовать пост через бота, убедитесь, что бот добавлен в группу обсуждения. Для этого выполните следующие шаги:

  • Перейдите в настройки канала и выберите "Группа обсуждения".
  • Добавьте бота в группу, используя его @username.
  • После добавления подождите несколько минут, чтобы изменения вступили в силу.
  • Попробуйте снова отправить сообщение через бота.

Метод: sendMessage.


{
	"ok":false,
	"error_code":403,
	"description":"Forbidden: bot is not a member of the channel chat"
}

Дополнительные советы: Если ошибка продолжает возникать, проверьте, есть ли у бота необходимые разрешения в группе. Убедитесь, что бот не заблокирован в чате и имеет доступ к отправке сообщений.

Bad request: Group migrated to supergroup

Описание: Происходит, когда групповой чат конвертируется/переносится в супергруппу. Это может случиться, если вы пытаетесь отправить сообщение в старый идентификатор группового чата, который больше не существует, так как он был преобразован в супергруппу.

Код ошибки: 400.

Как исправить: Проверьте chat_id и убедитесь, что используете новый идентификатор супергруппы. Для этого вы можете воспользоваться методом getUpdates или getChat, чтобы получить актуальную информацию о супергруппе и её идентификаторе. Также убедитесь, что у вашего бота есть необходимые разрешения для отправки сообщений в супергруппу.

Метод: sendMessage.


{
	"ok": false,
	"error_code": 400,
	"description": "Bad Request: group chat was migrated to a supergroup chat",
	"parameters": {
		"migrate_to_chat_id": -123456789
	}
}

Bad request: Invalid file id

Описание: Идентификатора файла, который вы пытаетесь получить, не существует. Это может произойти, если вы используете устаревший или неверный file_id, который был удален или больше не доступен в системе.

Код ошибки: 400.

Как исправить: Проверьте отправленный file_id. Убедитесь, что он корректен и актуален. Если вы получаете этот идентификатор через другой запрос, попробуйте повторно запросить файл, чтобы получить новый file_id. Также убедитесь, что файл еще доступен для вашего бота и не был удален пользователем.

Метод: getFile.


{
  "ok": false,
  "error_code": 400,
  "description": "Bad Request: invalid file id"
}

Bad request: Message not modified

Описание: Текст текущего и нового сообщения, а также разметка ответа совпадают. Это означает, что вы пытаетесь обновить сообщение, но фактические изменения отсутствуют. Telegram API требует, чтобы изменения были заметными, иначе возвращается ошибка 400.

Код ошибки: 400.

Как исправить: Измените текст или разметку ответа сообщения, которое нужно отредактировать. Убедитесь, что новое сообщение отличается от предыдущего. Например, добавьте, удалите или измените хотя бы одно слово, а также проверьте, чтобы форматирование (разметка) сообщения также отличалось, если оно используется.

Метод: editMessageText.


{
  "ok": false,
  "error_code": 400,
  "description": "Bad Request: message is not modified"
}

Дополнительные рекомендации: Если вы часто редактируете сообщения, рассмотрите возможность хранения предыдущего текста сообщения и сравнения его с новым текстом перед отправкой запроса на редактирование. Также убедитесь, что вы используете актуальные идентификаторы сообщения и чата, чтобы избежать других возможных ошибок.

Conflict: Terminated by other long poll

Описание: Вы уже настроили вебхук и пытаетесь получать обновления через getUpdates. Это приводит к конфликту, так как оба метода предназначены для получения обновлений, но не могут использоваться одновременно.

Код ошибки: 409.

Как исправить: Не используйте метод getUpdates, пока настроен webHook, либо удалите webHook. Если вы хотите переключиться на использование getUpdates, выполните запрос deleteWebhook, чтобы отключить вебхук. После этого вы сможете использовать getUpdates для получения обновлений. Убедитесь, что вы корректно обрабатываете обновления, чтобы избежать потери сообщений.

Метод: getUpdates.


{
  "ok": false,
  "error_code": 409,
  "description": "Conflict: terminated by other long poll or webhook"
}

Дополнительные рекомендации: Если вы планируете использовать вебхуки, убедитесь, что ваш сервер настроен для обработки входящих запросов от Telegram. Проверьте, что URL вебхука доступен и корректно обрабатывает запросы. Также рассмотрите возможность использования логирования для отслеживания ошибок и успешных обработок обновлений.

Bad request: Wrong parameter action in request

Описание: Появляется ошибка, когда значение свойства действия недопустимо. Это может произойти, если вы передаете значение, которое не соответствует ожидаемым действиям API Telegram.

Код ошибки: 400.

Причины возникновения: Ошибка может возникнуть по нескольким причинам, включая опечатки в названии действия, использование устаревших или неверных значений, а также попытку отправить действие, не поддерживаемое текущей версией API.

Как исправить: Убедитесь, что вы указываете правильное свойство. Допустимые значения: typing, upload_photo, record_video, upload_video, record_voice, upload_voice, upload_document, choose_sticker, find_location, record_video_note, upload_video_note. Проверьте свой код на наличие опечаток и убедитесь, что используете актуальную документацию Telegram Bot API.

Метод: sendChatAction.


{
  "ok": false,
  "error_code": 400,
  "description": "Bad Request: wrong parameter action in request"
}

Дополнительные рекомендации: Если ошибка продолжает возникать, попробуйте протестировать запрос с помощью различных значений действия, чтобы определить, какие из них принимаются. Также стоит проверить, что ваш бот имеет необходимые разрешения для выполнения запрашиваемых действий.

Bad Request: message text is empty

Описание: Текст сообщения пуст или не указан. Это может произойти, если вы пытаетесь отправить сообщение без содержимого или если переменная, содержащая текст сообщения, не была правильно инициализирована.

Код ошибки: 400.

Как исправить: Убедитесь, что вы добавили текст сообщения перед его отправкой. Проверьте, что переменная, содержащая текст, не является пустой строкой или `null`. Также убедитесь, что текст сообщения соответствует ограничениям по длине, установленным Telegram (максимум 4096 символов).

Метод: sendMessage, editMessageText.


{
  "ok": false,
  "error_code": 400,
  "description": "Bad Request: message text is empty"
}

use deleteWebhook to delete the webhook first

Conflict: can't use getUpdates method while webhook is active

Описание: Вы пытаетесь использовать метод getUpdates для получения обновлений от вашего бота, однако вебхук в данный момент активен. Это означает, что ваш бот настроен на получение обновлений через вебхук, и использование getUpdates одновременно с активным вебхуком приводит к конфликту.

Код ошибки: 409.

Как исправить: Чтобы устранить эту ошибку, вам необходимо отключить вебхук. Для этого используйте метод deleteWebhook, который удалит текущий вебхук. После этого вы сможете использовать метод getUpdates для получения обновлений.

Дополнительная информация: Убедитесь, что вы действительно хотите переключиться на метод getUpdates, так как вебхуки обычно более эффективны для получения обновлений в реальном времени. Если вы работаете с вебхуками, то, возможно, вам не нужно использовать getUpdates.

Метод: getUpdates.


{
  "ok": false,
  "error_code": 409,
  "description": "Conflict: can't use getUpdates method while webhook is active; use deleteWebhook to delete the webhook first"
}
Комментарии