1

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

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(我稍后会移动它以使用 webhook)。

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

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

TLDR:如果机器人多次收到相同的命令,它将回复一条消息 X 次。我需要避免这种情况。

4

1 回答 1

0

也许你需要在你的代码中实现一个全局锁,它将锁定执行代码直到。解锁代码

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 ;
 }
});
于 2019-10-13T23:09:29.787 回答