#Что означает ошибка
Bot API: 409 Conflict
401 — неверный токен, 409 — конфликт getUpdates и webhook или двух экземпляров бота, 429 — превышен лимит запросов. Проверьте токен, остановите дубли и соблюдайте лимиты.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Неверный токен | В ответе Bot API 401 Unauthorized; метод getMe не возвращает сведения о боте. | Сверьте токен с @BotFather, не публикуя его; при утечке перевыпустите. |
| Два экземпляра | В ответе 409 Conflict; одновременно идут два вызова getUpdates. | Остановите второй обработчик и повторите запрос от одного экземпляра. |
| Webhook и polling | В ответе 409 Conflict; установлен webhook, а программа вызывает getUpdates. | Выберите webhook или опрос, при переходе используйте deleteWebhook. |
| Лимит запросов | В ответе 429 Too Many Requests есть parameters.retry_after. | Подождите указанные секунды и уменьшите частоту запросов. |
#Пошаговое решение
- Ошибка 401: проверьте токен без публикации его в перепискеЭтот шаг нужен, если в ответе API поле «error_code» равно 401. Откройте в Telegram проверенный чат @BotFather, выберите своего бота через /mybots и получите действующий токен в разделе API Token. Сравните его с секретом, сохранённым в настройках вашего приложения; исправьте значение именно там и перезапустите обработчик. Не вставляйте токен на сайты проверки и не прикладывайте его к снимкам экрана: любой обладатель токена может управлять ботом. Если токен попадал посторонним, перевыпустите его в @BotFather и замените во всех местах. Проверьте ответ метода getMe в журнале своего обработчика: успешный ответ содержит «ok»:true и сведения о боте.
- Ошибка 409: оставьте один способ получения обновленийЕсли в ответе указано 409 Conflict, проверьте журналы и убедитесь, что один бот не опрашивается двумя процессами одновременно. При использовании getUpdates остановите вторую копию программы; webhook и getUpdates нельзя использовать параллельно для одного бота. Если переводите бота на опрос, сначала удалите действующий webhook штатным методом deleteWebhook, осознанно выбрав, нужно ли сохранять накопленные обновления; не используйте drop_pending_updates без причины. После запуска только одного обработчика убедитесь, что новые сообщения поступают ровно один раз. Если администрируете не вы, передайте сообщение 409 ответственному разработчику.
- Ошибка 429: соблюдайте retry_afterВ журнале запросов найдите ответ с кодом 429 и поле parameters.retry_after: значение указывает, сколько секунд подождать до повторной попытки. Остановите повторяющийся запрос на это время, затем уменьшите частоту операций и добавьте очередь отправки. Не запускайте множество повторов подряд: это продлевает ограничения. Для проверки отправьте одно тестовое сообщение после указанной паузы и убедитесь, что ответ содержит «ok»:true. Если вы не разработчик бота, отправьте разработчику код ошибки и время появления, но не токен.
- Разделите ошибки авторизации, конфликта и ограниченийПрежде чем менять настройки, запишите точный error_code и description из ответа Telegram: 401 означает недействительные данные авторизации; 409 — несовместимые способы получения обновлений или параллельный опрос; 429 — временную частоту запросов. Исправляйте только свой случай, а не все причины по очереди. Повторите один диагностический запрос после изменения и проверьте его JSON. Если в журнале код другой, найдите его описание в официальной документации core.telegram.org/bots/api и не подбирайте команды наугад.