Как выполнить функцию ОДИН РАЗ в onText () телеграмба - PullRequest
0 голосов
/ 22 января 2020

Я создаю простой телеграмб, который хранит в локальном файле json некоторые счетчики, например:

{"Counters": [
  {"potatoes": 3},
  {"bananas": 2}]
}

Я хочу написать своему боту что-то вроде: "/ add bananas" и ожидаемый ответ должен быть "Бананы: 3".

Я думал, что функция, как это:

function add(key){
  var db = JSON.parse(fs.readFileSync('./counters.json'))
  db.Counters[key] += 1
  var aux = JSON.stringify(db)
  fs.unlinkSync('./counters.json')
  fs.appendFileSync('./counters.json',aux)
}

И в бот. js Я сделал это:

bot.onText(/\/add/, (msg) => {
  var chatid = msg.chat.id
  var text = msg.text
  var aux = text.split(" ")   //for example: ['/add', 'bananas']
  add(aux[1])
})

На этом пути .onText () делает бесконечным l oop, а счетчик бананов бесконечно растет ...

Я не могу найти ошибку, кто-то ее видит?

Спасибо

...