Forums

Пытаюсь настроить вебхук

Друзья, всем привет, пытаюсь настроить вебхук для своего бота, раньше использовал пулинг, но я понимаю если у бота будет большой трафик то это может стать проблемой, поэтому решил научиться делать через вебхук, но возникает ошибка

import telebot
from flask import Flask, request

# Задаем токен и создаем экземпляр бота
TOKEN = 'my token'
bot = telebot.TeleBot(TOKEN, threaded=False)

# Создаем экземпляр приложения Flask
app = Flask(__name__)

# Задаем URL-адрес для получения обновлений от Telegram
WEBHOOK_URL = "https://btcMaster.pythonanywhere.com"


# Устанавливаем Webhook для приложения Flask
bot.remove_webhook()
bot.set_webhook(url=WEBHOOK_URL)


@app.route('/', methods=["POST"])
def webhook():
    bot.process_new_updates([telebot.types.Update.de_json(request.stream.read().decode("utf-8"))])
    return "ok", 200


# Функция для обработки входящих сообщений
@bot.message_handler(commands=['start'])
def start(message):
    # Отправляем пользователю приветственное сообщение
    bot.send_message(message.chat.id, "Привет! Я бот. Какой-нибудь текст")


# Запускаем приложение Flask
if __name__ == '__main__':
    app.run()

И выдает, такую ошибку:

Method Not Allowed
The method is not allowed for the requested URL.

What URL are you accessing when you get that error and what method are you using?

я смог сделать, только конечно я не понял в чём была проблема так как я посмотрел туториал в Ютубе, и там был такой код, с этим кодом у меня всё запустилось

import telebot
from flask import Flask, request

token = 'token'
secret = 'dfugvy78v7v8tw7v7cde9'
url = 'https://btcmaster.pythonanywhere.com/' + secret

bot = telebot.TeleBot(token, threaded=False)
bot.remove_webhook()
bot.set_webhook(url=url)

app = Flask(__name__)
@app.route('/'+secret, methods=['POST'])
def webhook():
    update = telebot.types.Update.de_json(request.stream.read().decode('utf-8'))
    bot.process_new_updates([update])
    return 'ok', 200

@bot.message_handler(commands=['start'])
def start(m):
    bot.send_message(m.chat.id, "hello")

It looks like the secret is part of the URL that is accessed by the webhook and you did not have that URL defined.