Добрый день!
Пытаюсь настроить телеграм бота на работу через вебхук, но не получается. Пользуюсь pyTelegramBotAPI.
Через интерфейс своего хостера сделал SSL сертификаты на домен, рейтинг
https://www.ssllabs.com/ssltest/ выдает А.
Не до конца понимаю, как именно мне надо зарегистрировать webhook через setwebhook в телеграме. Вроде все прошло нормально. Вот моя функция setwebhook:
WEBHOOK_URL_BASE = "https://%s:%s" % (WEBHOOK_HOST, WEBHOOK_PORT)
WEBHOOK_URL_PATH = "/%s/" % (API_TOKEN)
@app.route('/set_webhook', methods=['GET', 'POST'])
def set_webhook():
s = bot.set_webhook(url=WEBHOOK_URL_BASE+WEBHOOK_URL_PATH)
if s:
print(s)
return "webhook setup ok"
else:
return "webhook setup failed"
Она возвращает webhook setup ok.
Это обработчик webhook запросов от телеграма:
# Process webhook calls
@app.route(WEBHOOK_URL_PATH, methods=['POST'])
def webhook():
if flask.request.headers.get('content-type') == 'application/json':
json_string = flask.request.get_data().decode('utf-8')
update = telebot.types.Update.de_json(json_string)
bot.process_new_updates([update])
return ''
else:
flask.abort(403)
Мой хостер (beget.ru) не выдает зарегистрированные через их интерфейс SSL, а чтобы установить свои сертификаты, нужен выделенный IP-адрес за дополнительную плату. Телеграм говорит:
"2. To use a self-signed certificate, you need to upload your public key certificate using certificate parameter." Мой сертификат вроде бы не является самоподписанным, т.к. сертификат регистрировал хостер (этот момент для меня не ясен до конца).
Поэтому хотел уточнить, если сайт уже на https, и у телеграма параметр certificate в методе
setWebhook является не обязательным, то как правильно можно настроить webhook в моем случае?
Полный код моего файла __init__.py здесь:
https://pastebin.com/0SUrTKN1
Ориентировался на
этот пример библиотеки pyTelegramBotAPI.
Если вы съели собаку на телеграм ботах — подскажите, пожалуйста, как сделать webhook не имея самого .pem сертификата? Надо ли писать что-то BotFather, чтобы зарегистрировать webhook? Как можно проверить, что телеграм хотя бы пытается сделать POST запрос по указанному адресу? Как можно проверить промежуточные шаги настройки вебхука для бота?