【问题标题】:Discord.js TypeError: Cannot read property '0' of undefinedDiscord.js TypeError:无法读取未定义的属性“0”
【发布时间】:2022-01-19 19:34:22
【问题描述】:

您好,我在这段代码中遇到了问题,有什么帮助吗?

client.on("message", message => { 
  if(message.content.startsWith(prefix+"test")) {
      
let json = require('./json.json')
      
let channel = message.guild.channels.cache.get(json.channel);
let msg = channel.messages.fetch(json.msg);

let embed = msg.embeds[0];

embed.addField("User: ", message.author.username, true)


msg.edit({ embeds: [ embed ] });
  }
});

错误

let embed = msg.embeds[0];
TypeError: Cannot read property '0' of undefined

我想通过命令将字段添加到该嵌入消息,但出现此错误

【问题讨论】:

  • 你有没有尝试过一些基本的调试,比如检查msg的值是什么?

标签: node.js discord discord.js bots


【解决方案1】:

TextChannel.messages.fetch 返回一个 Promise。所以你必须把你的代码放在.then 或者使用async/await。 所以代码是:

client.on("message", message => { 
  if (message.content.startsWith(`${prefix}test`)) {
    let json = require('./json.json');
    let channel = message.guild.channels.cache.get(json.channel);
    channel.messages.fetch(json.msg).then(msg => {
      let embed = msg.embeds[0];
      embed.addField("User: ", message.author.username, true);
      msg.edit({ embeds: [embed] });
    });
  }
});

【讨论】:

  • 现在显示 DiscordAPIError: Cannot send an empty message
  • 只需在 v12 上使用 .edit(embed)