Плохой шлюз python-telegram-bot с webhook и Nginx

Я пытаюсь настроить webhook с python-telegram-bot и Nginx. Я столкнулся с проблемой, мой бот не получает сообщения от telegram. Я также пытался сделать GET/POST запросы от postman и всегда получаю ошибку "502 Bad Gateway". Я также запустил netstat для мониторинга порта 5000, к которому подключается мой telegram-бот, но он всегда пуст. Похоже, что webhook вообще не запускается.

Мой файл Nginx default.conf выглядит следующим образом:

upstream django {
server gunicorn:8000;
}

server { 
    listen 80; 
    server_name example.com www.example.com;
    return 301 https://$server_name$request_uri; 
} 

server {
    listen 443 ssl;
    ssl on;
    server_name example.com www.example.com; 
    ssl_certificate fullchain.pem;
    ssl_certificate_key privkey.pem;

    access_log /var/log/nginx/nginx.vhost.access.log;
    error_log /var/log/nginx/nginx.vhost.error.log;

    location /TELEGRAM_TOKEN {
        proxy_pass http://0.0.0.0:5000/TELEGRAM_TOKEN/;
    }

    location /static/ {            
        alias /static/;                   
    }  

    location / {                                
        proxy_pass http://example.com:8000; 
    } 
}

И код моего клиента telegram:

updater = Updater(api_token)

updater.dispatcher.add_handler(CommandHandler('start', start))
updater.dispatcher.add_handler(CallbackQueryHandler(button))
updater.dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, custom_command))

jq = updater.job_queue
job_minute = jq.run_repeating(callback_minute, interval=5)

#updater.start_polling()
updater.start_webhook(listen="0.0.0.0", port=5000, url_path=api_token,
                      webhook_url=f'https://example.com/{api_token}')
updater.idle()

У меня также есть опции Django для сервера Nginx, но я никогда не видел никакого учебника или документации о том, как настроить webhook с помощью Django, и это может быть причиной моих проблем.

У кого-нибудь есть идеи по решению моей проблемы?

CallMeStag, ваш совет использовать print(Bot(api_token).get_webhook_info())) помог мне решить эту проблему.

У меня было 2 проблемы с файлом конфигурации Nginx

  1. ssl on;

Выдало ошибку connection refused и я удалил его

  1. Я меняю его

     location /TELEGRAM_TOKEN {
         proxy_pass http://0.0.0.0:5000/TELEGRAM_TOKEN/;
     }
    

к нему

    location /TELEGRAM_TOKEN {
        proxy_pass http://example.com:5000/TELEGRAM_TOKEN/;
    }

и webhook работает.

Спасибо.

Вернуться на верх