Плохой шлюз 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
- ssl on;
Выдало ошибку connection refused и я удалил его
Я меняю его
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 работает.
Спасибо.