我写电报机器人并使用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 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
。
从邮递员的电报webhook指南尝试测试示例也返回403
解决方案:我通过在我的脚本中添加Express解决了这个问题,就像在此example
一样答案 0 :(得分:0)
如果您的机器人无法访问他想要访问的内容,则会发生403 forbidden
错误代码。一个示例可能是您使用 user_id 调用sendmessage
函数而不是 chat_id ,或者您的机器人无法访问聊天(被踢/禁止)
由于你的代码有点短缺,我的回答可能不是100%准确。
修改:这是指向错误的official telegram error documentation的链接。也许这可能对你有额外的帮助。
答案 1 :(得分:-1)
在任何地方添加此代码,它应该可以正常工作:
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);