Бот Telegram на Heroku: «Нет адреса, связанного с именем хоста» - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь развернуть простого эхо-бота на Heroku, используя веб-крючки Cherrypy.Он возвращает неверный запрос HTTP 400:

telebot.apihelper.ApiException: запрос к API Telegram был неудачным.Сервер вернул HTTP 400 Bad Request.Тело ответа:

[b '{"ok": false, "error_code": 400, "description": "Bad Request: bad webhook: Не удалось разрешить хост: Нет адреса, связанного с именем хоста"}']

Вот код:

import telebot
import cherrypy
import os

token = '<TOKEN>'
WEBHOOK_HOST = 'https://<APPNAME>.herokuapp.com/' + token
WEBHOOK_PORT = os.environ.get('PORT', 8443)
WEBHOOK_LISTEN = '0.0.0.0'
WEBHOOK_URL_BASE = "https://%s:%s" % (WEBHOOK_HOST, WEBHOOK_PORT)
WEBHOOK_URL_PATH = "/%s/" % token
bot = telebot.TeleBot(token)

class WebhookServer(object):
    @cherrypy.expose
    def index(self):
        if 'content-length' in cherrypy.request.headers and \
                        'content-type' in cherrypy.request.headers and \
                        cherrypy.request.headers['content-type'] == 'application/json':
            length = int(cherrypy.request.headers['content-length'])
            json_string = cherrypy.request.body.read(length).decode("utf-8")
            update = telebot.types.Update.de_json(json_string)
            bot.process_new_updates([update])
            return ''
        else:
            raise cherrypy.HTTPError(403)

@bot.message_handler(func=lambda message: True)
def echo_message(message):
    bot.reply_to(message, message.text)

bot.remove_webhook()
bot.set_webhook(url=WEBHOOK_URL_BASE + WEBHOOK_URL_PATH)

cherrypy.config.update({
    'server.socket_host': WEBHOOK_LISTEN,
    'server.socket_port': WEBHOOK_PORT
})

cherrypy.quickstart(WebhookServer(), WEBHOOK_URL_PATH, {'/': {}})
...