我想在telegraf中使用webHook,但我不知道如何正确使用它。
这是我的简单代码。但它仍然使用轮询。
const Telegraf = require('telegraf');
const bot = new Telegraf('123:ABC');
bot.telegram.setWebhook('https://myaddress.com');
bot.startWebhook(`/`, null, 4000);
bot.use(function(ctx, next){
try{
if(ctx.chat == undefined) return;
console.log("Hello World");
}catch (e){
console.log("Error");
}
});
bot.launch();发布于 2021-01-18 21:17:04
当bot.startWebhook()被称为Telegraf 将开始收听提供的web钩子url。时,因此您不需要在此之后调用bot.launch()。
此外,如果没有指定选项,则为bot.launch() 将在默认情况下以轮询模式启动bot。,如您的情况所示。
删除bot.launch(),bot应该以web钩子模式启动。
Telegraf.js ^4.0.0
如果您使用的是Telegraf.js Version4.0或更高版本,则变化量g声明:
现在应该始终使用bot.launch启动机器人,并为长轮询(默认)或webhooks配置相应的配置。
因此,您还可以尝试删除bot.telegram.setWebhook()和bot.startWebhook(),然后添加以下代码:
bot.launch({
webhook: {
domain: 'https://myaddress.com',
port: 4000
}
})有关参考,请参阅文档中的这个例子。
发布于 2021-11-09 19:33:21
这是为我工作的:
bot.startWebhook('/messages', null, 8443);
bot.launch();第二个参数是tlsOptions,它是可选的。
我读过电报只接受80,88,443和8443的网络钩子。
不确定是否正确,但这是一个重要的考虑,因为它是非常困难的故障排除网络钩子。
https://stackoverflow.com/questions/65701466
复制相似问题