Как проверить, есть ли в тексте сообщения пользователя определенные слова в телеграм боте?
Телеграм бот на node-telegram-bot-api. Нужно проверить, есть ли в тексте сообщения, от пользователя, определенные слова и если их нет, то отправлять сообщение. Я вынес эти слова в массив и не совсем понимаю как сделать проверку.
bot.on('message', async (msg) => {
const text = msg.text.toLowerCase()
const chatId = msg.chat.id
const options = ['текст один', 'текст два', 'текст три']
if (!text.includes(options)) {
bot.sendMessage(chatId, 'anything')
}
}
Ответы (2 шт):
Автор решения: vsemozhebuty
→ Ссылка
Попробуйте так (см. Array.prototype.some()):
bot.on('message', async (msg) => {
const text = msg.text.toLowerCase()
const chatId = msg.chat.id
const options = ['текст один', 'текст два', 'текст три']
if (!options.some(option => text.includes(option))) {
bot.sendMessage(chatId, 'anything')
}
}
Автор решения: Daniil Loban
→ Ссылка
Это пример с регулярными выражениями, конструктор регулярок можно усложнить например для разных склонений в русском языке и т.п.
const words = ['текст один', 'текст два', 'текст три'];
const re = RegExp(words.join('|'), 'ig');
const result = 'это например текст один или текст два'.match(re);
console.log(result);
[ "текст один", "текст два" ]