如何避免从电报机器人获得重复的回复?
我写了一个简单的电报机器人,在输入命令后,它会显示一些统计信息。它可以完美地工作,除非多次向同一命令(同一命令的不同用户)输入同一命令。现在看起来像这样:
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 ;
}
});