if (message.content.startsWith('let', 'Let')){/do something/})
Quiero que el bot funcione cuando el usuario escriba "let" o "Let", pero puede funcionar cuando escriba "let". ¿Cómo solucionar esto? Gracias por ayudar
Podrías usar expresiones regulares aquí:
var terms = ["let", "Let"]; var regex = new RegExp("^(?:" + terms.join("|") + ")\\b"); var inputs = ["Let it be!", "let it be!", "Green Eggs and Ham"]; for (var i=0; i < inputs.length; ++i) { if (regex.test(inputs[i])) { console.log("MATCH => " + inputs[i]); } else { console.log("NO MATCH => " + inputs[i]); } }
Para ser claros, estamos usando test()
con el patrón regex:
^(?:let|Let)\b
Puede agregar más términos a la alternancia anterior según sea necesario.
Para mantener las cosas flexibles, puede mantener una serie de palabras que desea verificar y luego usar some
para verificar si alguna de esas palabras está al comienzo de la cadena de contenido.
const words = ['let', 'Let', 'Bob']; const message1 = { content: 'let' }; const message2 = { content: 'notlet' }; const message3 = { content: 'Let' }; const message4 = { content: 'Bob' }; function startsWith(message) { return words.some(word => { return message.content.startsWith(word); }); } console.log(startsWith(message1)); console.log(startsWith(message2)); console.log(startsWith(message3)); console.log(startsWith(message4));
Creo que está buscando una coincidencia que no distinga entre mayúsculas y minúsculas. En ese caso, lo siguiente puede funcionar asumiendo que su message.content
es una cadena u objeto.
Aquí recopilamos la cadena escrita por el usuario en la variable userTypedThis
.
if (message.content.toString().toLowerCase().startsWith( userTypedThis.toString().toLowerCase()) ){/do something/})