首页 > 解决方案 > 如何使用电报网络钩子?

问题描述

我想在电报中使用 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();

标签: node.jstelegraf.js

解决方案


bot.startWebhook()被调用 Telegraf将开始监听提供的 webhook url,所以你不需要bot.launch()在那之后调用。

如果在您的情况下未指定任何选项bot.launch() ,默认情况下也会以轮询模式启动机器人。

删除bot.launch(),机器人应该以 webhook 模式启动。

Telegraf.js ^4.0.0

如果您使用的是 Telegraf.js 4.0 或更高版本,则更改日志指出:

现在应该始终使用 bot.launch 启动机器人,并使用长轮询(默认)或 webhook 的相应配置。

因此,您也可以尝试删除bot.telegram.setWebhook()and bot.startWebhook(),改为添加以下代码:

bot.launch({
  webhook: {
    domain: 'https://myaddress.com',
    port: 4000
  }
})

请参阅文档中的此示例以供参考。


推荐阅读