[英]How to set webhook for telegram bot in python?
我創建了一個機器人,它可以與 heroku 一起正常工作。 我想使用 webhook 來處理消息,但我不明白該怎么做。 這是我所做的:
電報24.py
import telepot
import json
from flask import Flask, request, abort
from telepot.namedtuple import *
bot = telepot.Bot("123456789:abcdefghijklmnopqrstuvwxyz")
app = Flask(__name__)
@app.route('/', methods=['POST','GET'])
def webhook():
if request.method == 'POST':
print("post")
return Response('post',status=200)
else:
print("get")
return Response('get',status=200)
if __name__ == '__main__' or __name__ == '__telegrampiu24__':
app.run()
我被困在這里,因為如果我向我的機器人發送消息並查看 heroku 上的日志,我總是會出錯
2021-02-26T13:12:24.889213+00:00 app[test.1]: * Serving Flask app "telegrampiu24" (lazy loading)
2021-02-26T13:12:24.889246+00:00 app[test.1]: * Environment: production
2021-02-26T13:12:24.889247+00:00 app[test.1]: WARNING: This is a development server. Do not use it in a production deployment.
2021-02-26T13:12:24.889247+00:00 app[test.1]: Use a production WSGI server instead.
2021-02-26T13:12:24.889290+00:00 app[test.1]: * Debug mode: off
2021-02-26T13:12:24.891889+00:00 app[test.1]: * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
2021-02-26T13:12:26.000000+00:00 app[api]: Build succeeded
2021-02-26T13:13:02.086234+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=POST path="/" host=provaxyz1.herokuapp.com request_id=54bdbd45bdf fwd="IP" dyno= connect= service= status=503 bytes= protocol=https
我不明白我做錯了什么,非常感謝任何幫助! 提前致謝
請參閱The Procfile上的文檔:
Heroku 應用程序的
web
進程類型很特殊:它是唯一可以從 Heroku 路由器接收外部 HTTP 流量的進程類型。 如果您的應用包含 web 服務器,則應將其聲明為應用的web
進程。
考慮到這一點,您的錯誤: No web processes running
建議您應該更改Procfile
以包含:
web: python "telegrampiu24.py"
這個問題以前不會發生,因為在你的機器人中加入 webhook 支持之前,它不需要接收 HTTP 流量,因為另一種方法使用“輪詢”,其中進程作為客戶端連接到電報的服務器。
盡管請注意這仍然是 Flask 的開發服務器。 從長遠來看,您應該考慮使用像gunicorn
這樣的生產 WSGI 服務器進行部署。 將gunicorn
添加到您的requirements.txt
中,然后使用 Procfile:
web: gunicorn telegrampiu24:app
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.