简体   繁体   中英

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

I just find the post without any reply on stackoverflow when i create this post... TelegramBot. "Webhook can be set up only on ports 80, 88, 443 or 8443" error on heroku webserver

my testing code is here:

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()

but server told me...

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)

I have struggled these about a week and almost success but somehow so less information found on google

Do I need to setup something on my remoted Linux system about PORT.?

could someone help.?

thx a lot...!

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

I think this is not about SSL problem

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.

Documentation updated: 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()

Not use set_webhook , use webhook_url param in start_webhook

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):

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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