node.js - 如何使用电报网络钩子?
问题描述
我想在电报中使用 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()
被调用 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
}
})
请参阅文档中的此示例以供参考。
推荐阅读
- c++ - 渲染和测试,驱动重要吗?
- apache-kafka - 为什么消费者在重启后会读取来自 Kafka 主题的所有消息?
- html - 带有 flexbox 和溢出的标签的纯 CSS 向导:省略号仅在 iPhone 上溢出
- javascript - javascript中字幕的正则表达式中的可变行数
- latex - LaTeX 中的甜甜圈饼图
- pandas - 是否可以使用 pd.read_sql 和分块来关闭/重新打开连接?
- html - 当我将鼠标从菜单上的锚标记链接移动时,我的下拉菜单不显示
- swi-prolog - 如何在 swi prolog HELP 应用程序中增加字体大小?
- python - 当我在 Sense HAT 上放置 wait_for_event 函数时,陀螺仪不起作用
- javascript - 如何在 Modal 组件中为我的文本呈现动态变量?