Node.js 为什么节点js电报机器人放在heroku上,答案是403

Node.js 为什么节点js电报机器人放在heroku上,答案是403,node.js,heroku,telegram-bot,telegraf,telegram-webhook,Node.js,Heroku,Telegram Bot,Telegraf,Telegram Webhook,我写电报机器人并使用Telegraf图书馆。 我把机器人放在了Heroku身上。 我这样设置Webhook: 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请求_id=a8f99998-5e9b-4

我写电报机器人并使用Telegraf图书馆。 我把机器人放在了Heroku身上。 我这样设置Webhook:

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请求_id=a8f99998-5e9b-4fe4-9af6-9ac56e492ae3 fwd=“149.154.167.206”dyno=web.1 connect=3ms服务=4ms状态=403字节=101协议=https

getWebhookInfo()还记录
最后一条错误消息:“来自webhook的错误响应:403禁止”
。 尝试测试示例从电报webhook指南与邮递员也返回403


解决方案:我通过在脚本中添加Express解决了此问题,如下图所示

如果您的机器人无法访问他试图访问的内容,则会出现
403禁止的
错误代码。例如,您使用用户id调用了
sendmessage
函数,而不是聊天id,或者您的机器人无法访问聊天(被踢出/禁止)

由于您的代码有点短,我的答案可能不是100%准确


编辑:这里有一个指向错误原因的链接。也许这对你会有额外的帮助。

我在任何地方都使用聊天id。通过轮询(本地),我的机器人可以工作。我也不完全清楚——我认为电报试图向我发送json时会出现错误,而不是当我试图向用户写信时……你有没有尝试过在另一个网站上托管你的脚本,然后是你的heroku网站?或者,看看是heroku配置导致了错误。因为我认为您无法更改该配置,所以我想您需要找到另一台主机。@AdaraHv您是否尝试使用另一台服务器/主机?我已经更新了我的问题:“通过在我的脚本中添加Express解决了此问题”