Discord.js : Не удается прочитать свойства «MessageEmbed» после message.channel.send

#javascript #node.js #discord #discord.js

#javascript #node.js #Discord #discord.js

Вопрос:

С помощью моего бота я отправляю встроенное сообщение и хочу иметь возможность получать множество свойств, но я называю это неправильно. Когда я делаю «console.log» после отправки, у меня есть все свойства, но я не могу получить к ним доступ другими методами.

Я думаю, что я застрял в вызове «message.channel.XXXXX» и не могу связаться с «MessageEmbed».длина» и т.д… Как я могу это сделать, если моим событием является «message», и все следует за классом «message.XXXX»?

 client.on('message', (message) => {
 if (message.content === '!sendembed') {
  const exampleEmbed = {
   color: 16711600,
   title: '__TITLE EMBED MESSAGE__',
   // a lot of fields...
  };
  message.channel
   .send({ embed: exampleEmbed })
   .then(console.log(`lenght:${message.embeds.MessageEmbed.length}`));
 }
});
  

И, конечно, у меня ошибка:

 TypeError: Cannot read property 'length' of undefined
  

Ответ №1:

MessageEmbed не является свойством message.embeds . Вместо этого используйте message.embeds[0] , поскольку message.embeds возвращает array количество вложений.

Кроме того, length не является свойством embed , так что это вернет ошибку.


Поняв, что я неправильно понял вопрос, вот мое новое решение. message.channel.send() возвращает Promise отправленное сообщение, которое можно использовать при обратном вызове.

 message.channel.send({ embed: exampleEmbed }).then((msg) => {
   // gain full access to Message object
   console.log(msg.channel);
   console.log(msg.author);

   // get access to MessageEmbed object
   console.log(msg.embeds[0])
   console.log(msg.embeds[0].title.length);
};
  

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

1. Я знаю, но как я могу получить доступ к свойствам вставки сообщений, таким как . длина и другое после этой команды : message.channel.send({ embed: exampleEmbed }); Я хочу иметь доступ к свойствам этого: discord.js.org/#/docs/main/stable/class/MessageEmbed

2. Ах, извините, я неправильно понял. Я отредактировал свой ответ с помощью более подходящего решения.