Бот Telegram не получает обновления от webhook - PullRequest
0 голосов
/ 29 июня 2018

Я столкнулся со следующей проблемой после переноса моего бота на новый сервер. Я использую webhook для получения обновлений, но теперь бот не получает их с серверов telegram. Я попытался отправить POST-запрос с помощью curl с сервера удаления и бот обработал его обычным способом Я проверил webhook с помощью getWebhookInfo, и он вернул объект с непустым url и pending_update_count, равным 74, без ошибок. Полагаю, это означает, что серверы Telegram по какой-то причине не могут отправлять POST-запрос на мой хост.

ОС моего сервера - Arch Linux.

Я использую pyTelegramBotAP.

CONFIG = ConfigParser()
CONFIG.read(os.path.join('data', 'config.ini'))

# webhook url
URL_BASE = "https://{}:{}".format(CONFIG['server']['ip'], CONFIG.getint('server', 'port'))
URL_PATH = "/{}/".format(CONFIG['telegram bot']['token'])

BOT = telebot.TeleBot(CONFIG['telegram bot']['token'])

# server that will listen for new messages
APP = web.Application()

URL = URL_BASE + URL_PATH

BOT.set_webhook(url=URL, certificate=open(CONFIG['ssl']['certificate'], 'rb'))

# Build ssl context
CONTEXT = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
CONTEXT.load_cert_chain(CONFIG['ssl']['certificate'], CONFIG['ssl']['private key'])

# Start aiohttp server
web.run_app(
    APP,
    host=CONFIG['server']['listen'],
    port=CONFIG['server']['port'],
    ssl_context=CONTEXT,
)

Пожалуйста, помогите!

Ответы [ 3 ]

0 голосов
/ 30 июня 2018

Чтобы проверить состояние брандмауэра, запустите $ ufw status
Пожалуйста, покажите вам URL_BASE без реального IP.

Какая операционная система на вашем сервере?
Вы отправляете тестовый запрос от CURL на URL Telegram или вашего сервера?

Можете ли вы получить ответ от вашего сервера, если вы запускаете простое приложение?

Пример:

from aiohttp import web

async def hello(request):
    return web.Response(text='Hello world!')

app = web.Application()
app.add_routes([web.get('/', hello)])
web.run_app(app, host='localhost', port=3003)

Проверить ответ:

$ curl localhost:3003
Hello world!

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

0 голосов
/ 01 июля 2018

Telegram webhook общается только с конечными точками https, поэтому я предлагаю проверить ваш сервер на наличие соединений https.

Кроме того, вызов getWebhookInfo возвращает объект состояния с последней информацией об ошибке вашей конечной точки. Посмотрите эту информацию об ошибке и, возможно, найдете точную проблему.

0 голосов
/ 29 июня 2018

Пожалуйста, проверьте Брандмауэр на вашем сервере, вполне возможно, что брандмауэр на вашем сервере не передает сообщение вашему приложению.

...