Estoy creando un bot que me avisará si se dice cierta frase en mi discordia. Actualmente estoy usando
if(message.content.toLowerCase() === 'word')¿Cómo puedo hacer que detecte "palabra" en cualquier oración? Nuevo en la codificación, así que solo seguí una guía y después de unas horas no pude resolverlo. Solo conseguí que me hiciera ping si solo se decía "palabra" y nada más.
Una solución simplista es:
function contains(content, word) { return (content.toLowerCase().indexOf('word') >= 0); } console.log(contains("This is the word!")); //true console.log(contains("This is WordPress")); //true console.log(contains("Something")); //false Como puedes ver, el segundo ejemplo es incorrecto, porque WordPress se diferencia semánticamente de word . Entonces, si no es suficiente encontrar la palabra, pero también queremos aislarla, entonces podemos hacer algo como esto:
function contains(content, word) { let pattern = new RegExp("[^az]" + word + "[^az]"); return (pattern.test(content.toLowerCase())); } console.log(contains("This is the word!", "word")); //true console.log(contains("This is WordPress", "word")); //true console.log(contains("Something", "word")); //false En este segundo ejemplo, antepongo y agrego [^az] , que significa "no es una letra".