Ошибка 409 Conflict у Telegram-бота: второй polling или старый webhook
Оставьте один процесс получения обновлений, проверьте прежний webhook и восстановите ответы бота без потери очереди сообщений.
При ошибке 409 Conflict сначала прочитайте описание Telegram целиком. Сообщение про другой getUpdates обычно указывает на конкурирующий polling-процесс, а сообщение про webhook — на другой способ получения обновлений. Покупка более мощного тарифа эти конфликты не устраняет: нужно определить, кто сейчас получает события вашего бота.

Как оставить один источник обновлений
Остановите лишние копии
Проверьте ноутбук, прежний хостинг, тестовый сервер и фоновые процессы вашей среды разработки. Закройте локальный запуск и выключите старый сервер штатно. Не запускайте проверочный getUpdates параллельно с основным ботом: такой тест сам начинает конкурировать за ту же очередь и затрудняет диагностику.
Проверьте настройку webhook
Через библиотеку, которую использует проект, вызовите getWebhookInfo и посмотрите, пусто ли поле url. Непустой адрес означает установленный webhook. Если вы осознанно переносите бота на polling, вызовите deleteWebhook перед запуском получения обновлений. Токен читайте из BOT_TOKEN и не вставляйте в URL командной строки или публичный журнал.
Сохраните ожидающие сообщения
При удалении webhook не включайте drop_pending_updates, если вам нужны накопленные события. Их удаление — отдельное решение, а не обязательная часть исправления. После переноса обработчики должны учитывать повторную доставку: критичное действие, например создание заказа, нельзя без проверки повторять для одного и того же события.
- Консоль
Запустите одну копию и проверьте ответ
Запустите сервер в панели, дождитесь сообщения вашего приложения о подключении, затем отправьте тестовую команду в личный чат. Убедитесь, что пришёл один ответ и ошибка не возвращается в течение нескольких циклов polling. Статус «Работает» в панели подтверждает запуск процесса, а не успешную обработку Telegram-событий.
Если конкурентный запрос появляется снова, ищите автоматический перезапуск старой копии: запланированную задачу, службу на прежней машине или ещё один экземпляр приложения. Запишите времена ошибок и сопоставьте с журналами запусков. Внутри одного проекта тоже может дважды вызываться функция старта polling — например, при импорте модуля и при выполнении основного файла.