Почему узел js телеграмма бот разместил на героку ответа с 403
Я пишу бот Telegram и использую библиотеку Telegraf. Я разместил своего бота на Heroku. Я настроил webhooks таким образом:
app.telegram.setWebhook(`${URL}/bot${BOT_TOKEN}`);
app.startWebhook(`/bot${BOT_TOKEN}`, null, PORT);
Но в журналах Heroku я вижуat=info method=POST path="/bot" host=my-app.herokuapp.com request_id=a8f99998-5e9b-4fe4-9af6-9ac56e492ae3 fwd="149.154.167.206" dyno=web.1 connect=3ms service=4ms status=403 bytes=101 protocol=https
getWebhookInfo() также войти last_error_message: 'Wrong response from the webhook: 403 Forbidden
, Попробовав тестовый пример из руководства телеграммы с почтальоном, вы также получите 403
РЕШЕНИЕ: я решил это путем добавления Express в мой скрипт, как в этом примере
1 ответ
403 forbidden
Код ошибки в основном происходит, если у вашего бота нет доступа к тому, чего он пытается достичь. Примером может быть то, что вы назвали sendmessage
функция с user_id, а не chat_id или что ваш бот не имеет доступа к чату (выгнан / забанен).
Поскольку вы немного разбирались в коде, мой ответ может оказаться не на 100% точным.
Изменить: Вот ссылка на официальную документацию об ошибке телеграммы об ошибке. Может быть, это может быть дополнительной помощью для вас.
Добавьте этот код перед чем-либо, он должен работать правильно:
const Telegraf = require('telegraf')
const API_TOKEN = process.env.API_TOKEN || 'your token';
const PORT = process.env.PORT || 3000;
const URL = process.env.URL || 'https://your-app.herokuapp.com';
const bot = new Telegraf(API_TOKEN);
bot.telegram.setWebhook(`${URL}/bot${API_TOKEN}`);
bot.startWebhook(`/bot${API_TOKEN}`, null, PORT);