最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何避免从电报机器人获得重复的回复?

运维笔记admin13浏览0评论

如何避免从电报机器人获得重复的回复?

如何避免从电报机器人获得重复的回复?

我写了一个简单的电报机器人,在输入命令后,它会显示一些统计信息。它可以完美地工作,除非多次向同一命令(同一命令的不同用户)输入同一命令。现在看起来像这样:

me: /hello
bot: "hey"
me: /hello
user2: /hello
user3: /hello
bot: "hey"
bot: "hey"
bot: "hey"

如果与上一条相同,则仅显示一条消息。

me: /hello
bot: "hey"
me: /hello
user2: /hello
user3: /hello
bot: "hey"

我正在使用带轮询方法的node-telegram-bot-api(我稍后将其移动以使用webhooks)。

我仅使用电报api中的bot.onText / bot.sendMessage函数。

bot.onText(/^\/test$/, async function onTestText(msg) {
    bot.sendMessage(msg.chat.id, 'hey', {parse_mode: 'Markdown'});
});

TLDR:如果bot多次收到同一命令,它将以一条X倍的消息答复。我需要避免这种情况。

回答如下:

也许您需要在代码内部实现全局锁定,这将锁定执行代码直到。解锁代码

let lock= false ;
bot.onText(/^\/test$/, async function onTestText(msg) {
 if(!lock){
  lock = true ; 
  await bot.sendMessage(msg.chat.id, 'hey', {parse_mode: 'Markdown'});
  lock = false ;
 }
});
发布评论

评论列表(0)

  1. 暂无评论