Задать вопрос
@Anton27

TSL/SSL connection has been closed telebot, как решить проблему?

Я хотел перевести своего бота в тг на webhook, сделал все по инструкции, арендовал vps, но не выходит, у меня постоянно эта ошибка
TLS/SSL connection has been closed (EOF) (_ssl.c:997)


main.py
import telebot
import cfg
import cherrypy
from telebot import types 
import sqlite3
from datetime import datetime


WEBHOOK_HOST = ''
WEBHOOK_PORT = 443  # 443, 80, 88 или 8443 (порт должен быть открыт!)
WEBHOOK_LISTEN = ''  # На некоторых серверах придется указывать такой же IP, что и выше

WEBHOOK_SSL_CERT = 'cert.pem'  # Путь к сертификату
WEBHOOK_SSL_PRIV = 'private.key'  # Путь к приватному ключу

WEBHOOK_URL_BASE = "https://%s:%s" % (WEBHOOK_HOST, WEBHOOK_PORT)
WEBHOOK_URL_PATH = "/%s/" % (cfg.TOKEN)
bot = telebot.TeleBot(cfg.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
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, {'/': {}})
  • Вопрос задан
  • 344 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@Anton27 Автор вопроса
Я решил проблему, суть заключалась в том, что нужно было открыть порты сервера доступных исключительно для webhook(80,88,443 8443)

sudo ufw allow 80/tcp 
sudo ufw allow 443/tcp
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы