мой массив перестает работать, если я помещаю более 2 значений

#javascript #discord #discord.js

Вопрос:

если у вставки есть одно из имен ListClaims в .setAuthor, она реагирует на смайлик, это то, что я хочу, чтобы она делала, но она перестает работать, если я помещаю более 1 имени в ListClaims, попробуйте использовать txt, но это не работает.

     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].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('🎉')
        }
        }
      }
    }
 

Ответ №1:

Вы вызываете includes() строку ( author.name ) с аргументом массива. Вы хотите, чтобы все было наоборот. Так что вместо:

 if (embed[i].author.name.toLowerCase().includes(ListClaims))
 

Попробуйте использовать:

 if (ListClaims.includes(embed[i].author.name.toLowerCase()))
 

Ответ №2:

на функцию js includes можно ссылаться здесь

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes

ниже приведен пример

 const array1 = [1, 2, 3];
document.write("Is array1 contain 2 : ");
document.write(array1.includes(2));

document.write("<br>");

document.write("Is array1 contain 4 : ");
document.write(array1.includes(4)); 

Комментарии:

1. Вопрос был задан для node.js код, а не в стандартном html-коде js!

2. приведенная выше документация JS является общей для Javascript, html предназначен только для примера, братан. @Jeffplays2005

3. Оооо, я понимаю, моя плохая

Ответ №3:

.includes-это метод массива, но вы использовали его как строковый метод.

Ниже я исправил это, а также очистил ваш код. Новый код находится в функции MessageHandler.

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

// dummy message object
const msg = {
  embeds: [
    {name: "alex"},
    {name: null},
    {name: "juan"},
  ],
  react: (str) => console.log(str),
}

function handleMessage(msg){
  if (!msg.embeds.length) return;
  msg.embeds.forEach(embed => {
    if (listClaims.includes(embed.name)) msg.react('🎉');
  })
}

handleMessage(msg)