Как сделать так, чтобы мой discord-бот обнаруживал поля, поле заголовка и описание полей вложений?

#discord.js #bots #embed

#discord.js #боты #Внедрить

Вопрос:

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

 client.on('message', (message) => {
  if (message amp;amp; message.embeds) {

    for (var i = 0; i < message.embeds.length; i  ) {
      if (
        message.embeds[i].description amp;amp; 
        message.embeds[i].description.includes("arena event")) 
      {
        message.channel.send('<@amp;721372445457645579> JOIN!')
      }
    }

  }
});
 

Ответ №1:

Из MessageEmbed класса у вас может быть fields свойство —

  message.embeds[i].fields[0].name
 message.embeds[i].fields[0].value
 

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

1. я изменил код, как вы сказали client.on('message', (message) => { if (message amp;amp; message.embeds) { for (var i = 0; i < message.embeds.length; i ) { if ( message.embeds[i].fields[0].name amp;amp; message.embeds[i].fields[0].name.includes("arena event")) { message.channel.send('<@amp;721372445457645579> JOIN!') } } } }); , он работает, но через некоторое время выдает мне ошибку TypeError: невозможно прочитать свойство ‘name’ или undefined

2. это означает, что там нет поля

3. Попробуйте это — client.on('message', (message) => { if (message amp;amp; message.embeds) { for (var i = 0; i < message.embeds.length; i ) { if ( message.embeds[i].fields.length amp;amp; message.embeds[i].fields[0].name.includes("arena event")) { message.channel.send('<@amp;721372445457645579> JOIN!') } } } });