簡體   English   中英

如何在 python 中為電報機器人設置 webhook?

[英]How to set webhook for telegram bot in python?

我創建了一個機器人,它可以與 heroku 一起正常工作。 我想使用 webhook 來處理消息,但我不明白該怎么做。 這是我所做的:

  1. 將此代碼上傳到 heroku

電報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()
  1. 使用https://api.telegram.org/bot123456789:abcdefghijklmnopqrstuvwxyz/setwebhook?url=https://provaxyz1.herokuapp.com/設置 webhook(顯然使用我的正確令牌)

我被困在這里,因為如果我向我的機器人發送消息並查看 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM