繁体   English   中英

python-telegram-bot.I 已经 PORT 8443 但是在引导设置 webhook 时出错:Bad webhook:webhook 只能在端口 80、88、443 或 8443 上设置

[英]python-telegram-bot.I already PORT 8443 but Error while bootstrap set webhook: Bad webhook: webhook can be set up only on ports 80, 88, 443 or 8443

当我创建这篇文章时,我只是在 stackoverflow 上找到了没有任何回复的帖子...... TelegramBot。 heroku 网络服务器上的“Webhook 只能在端口 80、88、443 或 8443 上设置”错误

我的测试代码在这里:

from configparser import ConfigParser
import logging

import os
    
import telegram
from flask import Flask, request
from telegram.ext import  Updater, Dispatcher, MessageHandler, Filters, CommandHandler

env = ConfigParser()
env.read('config.ini')
TOKEN = env['TELEGRAM']['ACCESS_TOKEN']

PORT = int(os.environ.get('PORT', '8443'))

updater = Updater(token=TOKEN)


#
#body part ( that's not important to show)
#


updater.start_webhook(listen="0.0.0.0",
                      port=PORT,
                      url_path=TOKEN)
updater.bot.set_webhook("https://tgbot00.herokuapp.com/" + TOKEN)
updater.idle()

但是服务员告诉我...

here2021-03-19T14:48:06.712894+00:00 app[web.1]: Error while bootstrap set webhook: Bad webhook: webhook can be set up only on ports 80, 88, 443 or 8443

2021-03-19T14:48:06.713033+00:00 app[web.1]: Failed bootstrap phase after 0 retries (Bad webhook: webhook can be set up only on ports 80, 88, 443 or 8443)

我已经为此苦苦挣扎了大约一周,几乎成功了,但不知何故,在谷歌上找到的信息太少了

我需要在我的远程 Linux 系统上设置一些关于 PORT 的东西吗?

有人可以帮忙吗?

多谢...!

更新---------------------------------------- https://github.com/python -telegram-bot/python-telegram-bot/wiki/Webhooks#heroku

我认为这与 SSL 问题无关

Heroku
On Heroku using webhook can be beneficial on the free-plan because it will
automatically manage the downtime required. The reverse proxy is set up for you and an environment 
is created. From this environment you will have to extract the port the bot is supposed to listen on. 
Heroku manages the SSL on the proxy side, so you don't have provide the certificate yourself.

文档更新: https://github.com/python-telegram-bot/python-telegram-bot/wiki/Webhooks#heroku

import os
TOKEN = "TOKEN"
PORT = int(os.environ.get('PORT', '8443'))
updater = Updater(TOKEN)
# add handlers
updater.start_webhook(listen="0.0.0.0",
                      port=PORT,
                      url_path=TOKEN,
                      webhook_url="https://<appname>.herokuapp.com/" + TOKEN)
updater.idle()

不使用set_webhook ,在start_webhook中使用webhook_url参数

2021-03-19T18:12:15.168205+00:00 heroku[web.1]: State changed from crashed to starting
2021-03-19T18:12:20.004562+00:00 heroku[web.1]: Starting process with command `python3 main.py`
2021-03-19T18:12:24.283471+00:00 app[web.1]: Error while bootstrap set webhook: Bad webhook: webhook can be set up only on ports 80, 88, 443 or 8443
2021-03-19T18:12:24.283508+00:00 app[web.1]: Failed bootstrap phase after 0 retries (Bad webhook: webhook can be set up only on ports 80, 88, 443 or 8443)
2021-03-19T18:12:24.286525+00:00 app[web.1]: unhandled exception in Bot:1747558409:updater
2021-03-19T18:12:24.286526+00:00 app[web.1]: Traceback (most recent call last):

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM