1

질문은 pyTelegramBotAPI 모듈을 사용하여 전보 봇에서 webhook을 사용하는 것에 관한 것입니다. 나는 봇을 호스트하기 위해 pythonanywhere.com을 사용하고 있습니다.pyTelegramBotAPI 및 Flask on telethon bot webhook pythonanywhere.com

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 같이 내가 메시지 처리기를 사용할 때, 나는 봇에서 아무 대답도받을 수 없습니다 :

다음 코드는 잘 작동 내가 다른에서 예를 시도

# 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 계정을 사용할 수 없습니다.