仅在author.name的内容是精确的或剩余的单词时才有效



bot仅在author.name的内容准确时做出反应,但如果它有一个额外的单词,它不工作,但它不会抛出错误例子:

const ListClaims = ["rick sanchez", "alex", "juan"];

rick sanchez没有错误,因为它与ListClaims是精确的

rick sanchez morty有一个错误,因为它有额外的字母morty

var ListClaims = ["rick sanchez","alex","juan"];
if(message.embeds.length >= 0) 
// Check if the Message has embed or not
{
let embed = message.embeds
// console.log(embed) just a console.log
for(let i = 0; i < embed.length; i++)
{
if (!embed[i] || !embed[i].author || embed[i].author.name === null) return;
// check each embed if it has setAuthor or not, if it doesnt then do nothing
{
if(embed[i].author.name.toLowerCase().includes(ListClaims))
// check each embed if it includes word
{
message.react('🎉')
}
}
}
}

我已经重新格式化了你的代码,所以它更简单,更容易阅读。如果你给出一个更好的例子来说明你想要发生什么,我可以编辑这个答案来更好地解决它。

function messageHandler() {
const msg = {
embeds: [
{ author: { name: "alex" }},
{ author: { name: "john"}},
{ author: { name: "rick sanchez morty"}},
]
}
const listClaims = ["rick sanchez", "alex", "juan"];
// 0 is falsey by default, so you dont have to check if it's  == 0.
if (!msg.embeds.length) return;
// Check if the Message has embed or not
msg.embeds.forEach(embed => {
// "", null and undefined are also falsey, so we don't need to check them.
// also this if statement is not needed, since you can just do Array.includes().
if (!embed.author.name) return;
// .includes() is an array method, not a string method, so you have to do Array.includes(target), not target.includes(array).
if (listClaims.includes(embed.author.name.toLowerCase())) message.react('🎉');
});
}
const message = {
react: console.log
};
messageHandler()

相关内容