提问者:小点点

DISCORD.JS 类型错误:无法读取未定义的属性“url”


我想将所有进入通道 X 的消息转发到通道 Y,这工作正常。但我也想在有图片时将每张图片转发到通道 Y。

收到此错误:未处理的promise拒绝警告:类型错误:无法读取未定义的属性“url”

这是我的代码,希望有人可以帮助我

bot.on('message',async msg => {
    if(msg.channel.id != readingchannel)return
    let content = msg.content
    let pic =  msg.attachments
    let alertembed = new Discord.MessageEmbed()
    .setTitle("TEST")
    .setColor("RANDOM")
    .setDescription(msg.content)
    bot.channels.cache.get(writingchannel).send(alertembed)
    if(msg.attachments.length >= 1)return
    let alertembed2 = new Discord.MessageEmbed()
    .setTitle("TEST")
    .setColor("RANDOM")
    .setDescription(msg.content)
    .setImage(msg.attachments[0].url)
    bot.channels.cache.get(writingchannel).send(alertembed2)
});

共1个答案

匿名用户

看起来当您检查附件时,如果找到附件,则会返回,我假设这不是预期的行为。如果您收到带有附件的邮件,它将返回,但如果没有附件,嵌入内容将与(不存在的)图像一起发送。看到问题了吗?

要解决此问题,您所要做的就是更改if(msg.attachments.length)

现在,当您发送没有任何附件的邮件时,它将简单地返回,而不会尝试访问不存在的附件的 url 属性。