1

質問は、pyTelegramBotAPIモジュールを使用してTelegramボットでWebhookを使用することです。 私は、botをホストするためにpythonanywhere.comを使用しています。pyTelegramBotAPIによるtelegram bot webhookとpythonanywhere.comでのFlask

次のコードは正常に動作します:

from flask import Flask, request 
import telebot 

secret = "A_SECRET_NUMBER" 
bot = telebot.TeleBot ('YOUR_AUTHORIZATION_TOKEN') 
bot.set_webhook("https://YOUR_PYTHONANYWHERE_USERNAME.pythonanywhere.c.. 
}".format(secret), max_connections=1) 

app = Flask(__name__) 
@app.route('/{}'.format(secret), methods=["POST"]) 
def telegram_webhook(): 
    update = request.get_json() 
    if "message" in update: 
    text = update["message"]["text"] 
    chat_id = update["message"]["chat"]["id"] 
    bot.sendMessage(chat_id, "From the web: you said '{}'".format(text)) 
return "OK" 
しかし exampleに示したように、私はメッセージハンドラを使用する場合、私はbotから何の返事を受け取っていない:

# Process webhook calls 
@app.route(WEBHOOK_URL_PATH, methods=['POST']) 
def webhook(): 
    if flask.request.headers.get('content-type') == 'application/json': 
    json_string = flask.request.get_data().decode('utf-8') 
    update = telebot.types.Update.de_json(json_string) 
    bot.process_new_updates([update]) 
    return '' 
else: 
    flask.abort(403) 

# Handle '/start' and '/help' 
@bot.message_handler(commands=['help', 'start']) 
    def send_welcome(message): 
    bot.reply_to(message, 
    ("Hi there, I am EchoBot.\n" 
    "I am here to echo your kind words back to you.")) 

# Handle all other messages 
@bot.message_handler(func=lambda message: True, content_types=['text']) 
    def echo_message(message): 
    bot.reply_to(message, message.text) 

私は違うから例を試してみましたライブラリが、まだ答えはありません。

アイデア?

pythonanywhere.comでTelegram "echo-bot"の実際の例を共有できれば幸いです。

ありがとうございました。

答えて

2

あなたはこのようTeleBotコンストラクタでスレッドを無効にする必要があります。

bot = telebot.TeleBot('YOUR_AUTHORIZATION_TOKEN', threaded=False) 

私は同じ問題を持っていたし、ここに解決策を見つけた: https://www.pythonanywhere.com/forums/topic/9562/#id_post_40177

スレッディングは無料PythonAnywhereアカウントでは使用できません。

関連する問題