Телеграм бот на Node.js, выводящий смс юзеров периодически - Баг в одном участке кода
всем привет )
бот написан с использованиям telegraf js сначала напишу код и опишу где баг и в чем проблема, ко всем участкам кода прикрепляю коментарии для ясности
const arr = [];
bot.use(async (ctx, next) => { // бот на фоне работает и проверяет некоторые условия
await next() //next() запуск кода который ниже
if (ctx.message !== undefined) { // если юзер написал смс в чат
arr.push(ctx.message.text) //запихиваем его смс в масив
console.log(arr)
if (arr.length % 10 == 0) { //если в нашем масиве больше 10ти смс, бот выводит 1 смс рандомно из етих 10ти
ctx.reply(randomGreetings(arr)) // randomGreetings функция рандомно извлекающая елемент масива, бот пишет в групу ету смс
} else if (arr.length >= 1000) {
while (arr.length) { arr.pop(); }// если в масиве больше 1000 смс, очистить масив
}
}
// далее будет баг
for (element of arr) { // перебор машего масива с смсками
var questionSim = /[?]/i;
var matches_array = element.match(questionSim);
if (matches_array != null) { // если один из елементов содержит "?"
console.log(matches_array)
console.log(arr)
ctx.reply("вы написали - ?") // выводим смс, бот пишет в групу ету смс
if (element.search(questionSim) != -1) {
console.log("знак вопроса найден")
}
}
}
})
// проблема следующая, так как в масив записался знак вопроса, чтобы дальше не писал юзер, будем выполняться етот участок
ctx.reply("вы написали - ?")
так как знак вопроса в масиве есть, даже если его раз написать , проверка будет постоянно его находить по новой, нужно как то вывести смс и после удалить етот елемент, чтобы проверка на ? сохранилась но не виводила каждый раз смс. Так жде для ясности зачем вообше данный код и дополнительный вопрос, бот таким образом переодически будет писать в чат от себя смс взяв их от смс юзеров, далее планируеться улучшить систему для более умного отбора, но для начала топорный вариант рандомных смс, тоесть это бот для общения в групах, доп вопрос, как можно улучшить код, возможно кто то подобную задачу уже решал :)
