Как удалить webhook telegram
Перейти к содержимому

Как удалить webhook telegram

  • автор:

Как удалить вебхук в телеботе?

Когда запускаю проект появляется только одна надпись:
2021-12-17 18:11:11,093 (__init__.py:694 MainThread) ERROR — TeleBot: «A request to the Telegram API was unsuccessful. Error code: 409. Description: Conflict: can’t use getUpdates method while webhook is active; use deleteWebhook to delete the webhook first»
Как решить?

  • Вопрос задан более года назад
  • 6761 просмотр

Комментировать
Решения вопроса 0
Ответы на вопрос 1

SoreMix

soremix @SoreMix Куратор тега Python

bot.delete_webhook() перед созданием нового хука.

Как включить метод Webhook для ТГ бота, после deleteWebhook?

Сделал для себя ТГ бота на платформе Google Apps Sqript, все работало. Понадобилось на время удалить Webhook, чтобы запустить getUpdates. Для удаления использовал команду:
https://api.telegram.org/bot/deleteWebhook

Обратно установить Webhook уже не удалось, результат:

let tgToken = » ТОКЕН БОТА «;
let tgUrl https://api.telegram.org/bot» rel=»nofollow»>https://api.telegram.org/bot» + tgToken
let webAppUrl = » ссылка скрипт гугла как на вебприложение «;
(Естественно любое изменение в коде = новая версия вебприложения – сделано)

function setWebhook() let url = tgUrl + «/setWebhook?url ok»:true,»result»:true,»description»:»Webhook was set»>
Но бот не логирует обращения пользователя, не реагирует на команды и не отправляет сообщения.

2) Пробовал установить Webhook напрямую через браузер:
https://api.telegram.org/bot/setWebhook

3) Пробовал установить Webhook изменив tgUrl и токен бота, результат: Webhook не работает

4) На стаке вычитал способ, который должен включить Webhook и вроде как включает, но фактически не включат:
Вводил напрямую в браузере:
https://api.telegram.org/bot/setWebHook?url=https://script.google.com/macros/s/ссылка на вебприложение/exec&allowed_updates=[«callback_query»,»message»]

После всех вышеуказанных манипуляций попробовал запустить getUpdates, результат:

Фактически вебхук не работает, бот не реагирует.

Вопрос: как победить проблему и обратно включить метод Webhook для ТГ бота?

  • Вопрос задан 24 дек. 2022
  • 1174 просмотра

Регистрируем бот у @BotFather, устанавливаем WebHook

Переходим к сотрудничеству с Telegram. Зарегистрируем своего бота у @BotFather, получим токен для работы с API. Установим WebHook для взаимодействия нашего сервера с Bots API.

Name — Название бота
About — Что умеет этот бот? (выводится при открытии бота по середине экрана)
Description — Описание (доступно при просмотре профиля бота)
Botpic — Картинка — логотип бота
Commands — набор команд (доступно при вызове в диалоге с ботом командой / )

Обратите внимание, что поменять имя бота (@) в настройках возможности нет.

Методы взаимодействия с Bot API

Есть два взаимоисключающих способа получения обновлений для бота — getUpdates и webHook . Входящие обновления хранятся на сервере Telegram до тех пор, пока бот не получит их, но они не будут храниться дольше, чем 24 часа.

Независимо от того, какой вариант вы выбрали, вы получите в результате JSON-сериализованные объекты (WIKI).

В случае с getUpdates вам необходимо будет настроить периодическое снятие (например, 1 раз в секунду) с сервера Telegram обновлений (данных полученных от взаимодействия пользователя с ботом — сообщения, картинки . ).

В случае с webHook обновления вам будут доставляться Bot API по указанному адресу сразу же как только они появятся. Если в ответ API получит статус обработки его запроса не 200 OK, а другой, например, 500 (ошибка сервера) то обновления подвиснут и будут периодически к вам стучатся, и успокоятся только в случае получения в ответ статуса 200 ОК.

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

Устанавливаем WebHook

Для установки WebHook есть специальный метод setWebHook . Нам просто необходимо в параметре url передать web-адрес где будут обрабатываться данные отправленные Telegram Bot API. Допустим, что у вас такой же хостинг как у меня, и за работу бота будет отвечать файл index.php , который лежит в директории bots в корне сайта.

public_html |__cgi-bin |__bots |__index.php 

Если структура файлов у вас совпадает, и у вас есть доменное имя, а также установленный SSL сертификат, тогда назначаем webHook используя вот этот URL:

https://api.telegram.org/botВАШ_ТОКЕН/setwebhook?url=https://ВАШ_ДОМЕН/bots/index.php

Вставляем его в адресную строку браузера и переходим, в случае если все прошло без ошибок, на экране у вас выведется вот такая информация:

Это означает, что все прошло хорошо и WebHook установлен. Теперь можно спокойно начать работать над реализацией бота.

Дополнительные настройки WebHook

Также вместе с параметром url в методе setWebHook можно передать:

max_connections - максимальное разрешенное количество одновременных HTTPS-подключений к webhook для доставки обновления, 1-100. По умолчанию 40.

allowed_updates - можно передать типы обновлений, которые будет получать бот. По умолчанию подписка идет на все обновления.

certificate - сертификат открытого ключа, чтобы проверить используемый корневой сертификат, если у вас например самописный сертификат.

В случае если будет необходимо переназначить webHook, то нужно вызвать метод setWebHook еще раз и указать в качестве значения параметра url новый адрес обработчика данных от Bot API.

Для удаления webHook и перехода к getUpdates используйте метод deleteWebhook , параметры передавать не требуется.

Для получения, текущего состояние webHook используйте метод getWebhookInfo , параметры передавать не требуется.

Методы вызываются при помощи:

https://api.telegram.org/botВАШ_ТОКЕН/METHOD_NAME

Clear "pending_update_count" in Telegram Bot

As you can see, I have 5154 unread updates til now!! ( I'm pretty sure this pending updates are errors! Because no one uses this Bot! It's just a test Bot) By the way, this pending_update_count number are increasing so fast! Now that I'm writing this post the number increased 51 and reached to 5205 ! I just want to clear this pending updates. I'm pretty sure this Bot have been stuck in an infinite loop! Is there any way to get rid of it? P.S: I also cleared the webhook url. But nothing changed! UPDATE: The output of getWebhookInfo is this :

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *