Добрый день, завел себе VPS на Амазоне ,на Windows Server 2016.
Получил там два ip-адреса , внешний (будем назвать его 1.1.1.1) и внутренний (2.2.2.2)
После чего сделал самоподписанный сертификат на убунте для ip 1.1.1.1.
Далее произвел все операции по настройки «тела» бота согласно инструкции уважаемого Groosha (
https://groosha.gitbooks.io/telegram-bot-lessons/c...
При запуске бота происходит следующие :
[12/Dec/2017:09:22:37] ENGINE Listening for SIGTERM.
[12/Dec/2017:09:22:37] ENGINE Bus STARTING
[12/Dec/2017:09:22:37] ENGINE Set handler for console events.
[12/Dec/2017:09:22:37] ENGINE Started monitor thread 'Autoreloader'.
[12/Dec/2017:09:22:37] ENGINE Serving on https://0.0.0.0
[12/Dec/2017:09:22:37] ENGINE Bus STARTED
Хотя здесь должен приходить статус 200 (вроде),а в ответ на сообщение юзера бот должен его повторять.
Так выглядит код бота:
#!/usr/bin/python3.4
# -*- coding: utf-8 -*-
import telebot
import cherrypy
import config
WEBHOOK_HOST = ‘1.1.1.1’ #внешний ip выданный Amazon
WEBHOOK_PORT = 443
WEBHOOK_LISTEN = '0.0.0.0'
WEBHOOK_SSL_CERT = './webhook_cert.pem'
WEBHOOK_SSL_PRIV = './webhook_pkey.pem'
WEBHOOK_URL_BASE = "https://%s:%s" % (WEBHOOK_HOST, WEBHOOK_PORT)
WEBHOOK_URL_PATH = "/%s/" % (config.token)
bot = telebot.TeleBot(config.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, content_types=['text'])
def echo_message(message):
bot.reply_to(message, message.text)
bot.remove_webhook()
bot.set_webhook(url=WEBHOOK_URL_BASE + WEBHOOK_URL_PATH,
certificate=open(WEBHOOK_SSL_CERT, 'r'))
cherrypy.config.update({
'server.socket_host': WEBHOOK_LISTEN,
'server.socket_port': WEBHOOK_PORT,
'server.ssl_module': 'builtin',
'server.ssl_certificate': WEBHOOK_SSL_CERT,
'server.ssl_private_key': WEBHOOK_SSL_PRIV
})
cherrypy.quickstart(WebhookServer(), WEBHOOK_URL_PATH, {'/': {}})
Так выглядят настройки на Amazon: