【问题标题】:Discord.js : Can't read "MessageEmbed" properties after message.channel.sendDiscord.js:在 message.channel.send 之后无法读取“MessageEmbed”属性
【发布时间】:2020-12-19 00:57:40
【问题描述】:

通过我的机器人,我发送了一条嵌入消息,我希望能够获得很多属性,但我认为这是错误的。当我在发送后执行“console.log”时,我拥有所有属性,但无法使用其他方法访问它。

我想我被困在“message.channel.XXXXX”呼叫中,无法到达“MessageEmbed.length”等...如果我的事件是“消息”并且一切都遵循“我该怎么办” 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

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案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);
    };
    

    【讨论】:

    • 我知道,但是在此命令之后如何访问 .length 等消息嵌入属性:message.channel.send({ embed: exampleEmbed }); 我想访问此属性:discord.js.org/#/docs/main/stable/class/MessageEmbed
    • 啊,对不起,我误会了。我用更合适的解决方案编辑了我的答案。
    猜你喜欢
    • 2021-01-18
    • 2022-01-22
    • 2021-08-07
    • 2021-04-18
    • 2020-09-22
    • 2022-01-02
    • 2021-10-03
    • 2019-10-02
    相关资源
    最近更新 更多