Как не получить дубликаты ответов от моего бота-телеграммы? - PullRequest
0 голосов
/ 13 октября 2019

Я написал простого бота-телеграммы, который после ввода команды отображает некоторую статистику. Он работает безупречно, за исключением случаев, когда ему подают одну и ту же команду более одного раза (разные пользователи используют команду). Прямо сейчас выглядит примерно так:

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).

Я использую только функции bot.onText / bot.sendMessage из телеграммы api.

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

TLDR: если бот получает одну и ту же команду более одного раза, он ответит сообщением X раз. Мне нужно этого избегать.

1 Ответ

0 голосов
/ 14 октября 2019

возможно, вам нужно реализовать глобальную блокировку внутри вашего кода, которая будет блокировать выполнение кода до. разблокировка кода

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 ;
 }
});
...