Discord bot崩溃时,我试图添加一个图像嵌入一个if语句



我正在制作一个消息记录器,这是代码:

client.on('messageDelete', (messageDelete) => {
const deletedContent = `${messageDelete.content}`
const attachment = messageDelete.attachments.first()
const deletionEmbed = new Discord.MessageEmbed()
.setColor('RANDOM')
.setAuthor(`A message was deleted, content here:`)
.setDescription(deletedContent)
.addFields(
{ name: "Server:", value: `${messageDelete.guild.name}` },
{ name: "Channel:", value: `#${messageDelete.channel.name}` },
{ name: "Deleted by:", value: `${messageDelete.author.username}`},
)
.setTimestamp()
if (messageDelete.attachments.size !== 0) {
deletionEmbed.setImage(`${attachment.url}`)
} 
client.channels.fetch("875333721492975646").then((channel) => {
channel.send(deletionEmbed).catch(err => {
console.log(err)
})
})
});

if (messageDelete.attachments.size !== 0) { deletionEmbed.setImage(attachment.url) }应该添加一个图像到嵌入,如果有任何在删除的消息,它确实如此,但在它崩溃后给出RangeError [EMBED_FIELD_VALUE]: MessageEmbed field values may not be empty.错误,我不知道为什么会发生,我已经根据情况做出了不同的嵌入改变,没有任何错误。我还尝试使用try/catch或控制台。错误,但他们没有解决问题,机器人一直崩溃。

编辑:我试过日志附件。url,它确实给出了url,但是当我点击它时,它说:<Error> <Code>AccessDenied</Code> <Message>Access denied.</Message> <Details> Anonymous caller does not have storage.objects.get access to the Google Cloud Storage object. </Details> </Error>附件还有一个名为"proxyURL"在正常的url中,我也尝试过使用那个,但仍然没有,即使链接工作正常

您可以尝试? :方法。

基本上,我们会检查是否有附件,如果有我们会输入附件的url,否则我们会将图像设为空这样它就不会显示了

例子:

const attachment = messageDelete.attachments.first()
const embed = new Discord.MessageEmbed()
.setTitle('test')
.setImage(attachment ? attachment.url : null)

如果这不起作用,请console.log(attachment.url)并让我知道它记录了什么,否则如果我的方法有效,请享受你的一天!