Discord.js如何删除消息内旧附件 仅展示最新上传的图片?
解决方案
你遇到的是Discord消息编辑的默认附件逻辑问题:编辑消息时仅修改files字段不会覆盖原有附件,默认会将新附件追加到消息中,仅传入空files数组也不会删除已上传的旧附件。
修复方法
在编辑消息的参数中新增attachments: []字段,显式告知Discord清空所有原有附件,仅使用本次传入的新附件即可。
落子后编辑消息的修正代码
// 生成新画布、新附件、新embed的逻辑保持原有写法不变 const tictactoeImage = new Discord.MessageAttachment(canvas.toBuffer(),'TicTacToe.png'); const tictactoeEmbed = new Discord.MessageEmbed().setImage('attachment://TicTacToe.png'); return gamemessage.edit({ embeds: [tictactoeEmbed], files: [tictactoeImage], components: [gamemessagecomponent], attachments: [] // 新增这行清空所有旧附件 });
清空消息测试的修正代码
return gamemessage.edit({ content: 'Does this work?', embeds: [], files: [], components: [], attachments: [] // 新增这行即可删除所有旧图片 });
补充说明
- 加入
attachments: []后无需再给文件名加随机后缀也能正常刷新embed图片,旧附件会被完全移除,不会再出现多张图片堆叠的问题。 - 如果你使用的是discord.js v14版本,只需将
Discord.MessageAttachment替换为Discord.AttachmentBuilder,其余逻辑不变。
内容的提问来源于stack exchange,提问作者mariusHSK05
相关产品推荐
相关产品推荐

