我用python-telegram-bot
库开发了Telegram机器人,现在我想将其部署在服务器中,因此我设置了一个Webhook(在Official Wiki之后),但是当我尝试与我的机器人通信时我没有得到任何答复。
这是机器人的来源:
def main():
PRIVTOKEN = "1134xxxx"
updater = Updater(PRIVTOKEN)
dp = updater.dispatcher
dp.add_handler(CommandHandler("start", start))
# ...
updater.start_webhook(listen='127.0.0.1',
port=8843,
url_path=PRIVTOKEN)
updater.bot.set_webhook(webhook_url='https://example.com/' + PRIVTOKEN,
certificate=open("cert.pem", "rb"))
print("bot started")
updater.idle()
nginx配置文件:
server {
listen 443 ssl;
server_name example.com;
location /1134xxxx {
proxy_pass http://127.0.0.1:8443;
}
}
netstat状态:
sudo netstat -an | grep 8843
tcp 0 127.0.0.1:8843 0.0.0.0:* LISTEN
机器人(我已启用错误日志)或nginx(access / error.log)记录了其他错误
我还为防火墙中的8843端口添加了自定义规则。
答案 0 :(得分:1)
电报仅支持https
个请求。注意这一点。
我的nginx配置:
server {
listen 80;
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
location / {
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://localhost:5005/;
}
}