如何使用 telegraf webhook?
How to use telegraf webhook?
我想在 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();
当bot.startWebhook()
调用Telegrafwill start listening to the provided webhook url时,之后就不需要再调用bot.launch()
了。
还有 bot.launch()
will start the bot in polling mode by default 如果没有像您的情况那样指定选项。
删除 bot.launch()
并且机器人应该以 webhook 模式启动。
Telegraf.js^4.0.0
如果您使用的是 Telegraf.js 4.0 或更高版本,changelog 声明:
Bots should now always be started using bot.launch with the corresponding configuration for either long polling (default) or webhooks.
因此您也可以尝试删除 bot.telegram.setWebhook()
和 bot.startWebhook()
,改为添加以下代码:
bot.launch({
webhook: {
domain: 'https://myaddress.com',
port: 4000
}
})
请参阅文档中的 this example 以供参考。
这对我有用:
bot.startWebhook('/messages', null, 8443);
bot.launch();
第二个参数是tlsOptions,可选。
我读过 Telegram 只接受 80、88、443 和 8443 上的 webhooks。
不确定是否属实,但这是需要考虑的重要事项,因为很难对 webhook 进行故障排除。
我想在 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();
当bot.startWebhook()
调用Telegrafwill start listening to the provided webhook url时,之后就不需要再调用bot.launch()
了。
还有 bot.launch()
will start the bot in polling mode by default 如果没有像您的情况那样指定选项。
删除 bot.launch()
并且机器人应该以 webhook 模式启动。
Telegraf.js^4.0.0
如果您使用的是 Telegraf.js 4.0 或更高版本,changelog 声明:
Bots should now always be started using bot.launch with the corresponding configuration for either long polling (default) or webhooks.
因此您也可以尝试删除 bot.telegram.setWebhook()
和 bot.startWebhook()
,改为添加以下代码:
bot.launch({
webhook: {
domain: 'https://myaddress.com',
port: 4000
}
})
请参阅文档中的 this example 以供参考。
这对我有用:
bot.startWebhook('/messages', null, 8443);
bot.launch();
第二个参数是tlsOptions,可选。
我读过 Telegram 只接受 80、88、443 和 8443 上的 webhooks。
不确定是否属实,但这是需要考虑的重要事项,因为很难对 webhook 进行故障排除。