使用Node.js开发Discord机器人无法编辑指定ID消息问题求助
问题解决办法
报错原因
你遇到的TypeError: Cannot read properties of undefined (reading 'fetchMessage')报错是discord.js版本API不兼容导致:fetchMessage 是discord.js v11及更早版本的方法,v12及之后的版本该方法已被移除,迁移到了channel.messages命名空间下。
修正后的代码
首先确认你已经给机器人开启了对应频道的「查看消息」「发送消息」「编辑消息」权限,且待编辑的目标消息是该机器人账号发送的(Discord不允许编辑其他账号发送的消息),然后用下面的代码替换原有逻辑:
// 注意:discord.js v14+ 消息接收事件已从 "message" 改为 "messageCreate" client.on("messageCreate", async msg => { try { const channel = client.channels.cache.get('1234567890'); // 替换旧的fetchMessage为messages.fetch const targetMessage = await channel.messages.fetch('0987654321'); await targetMessage.edit(output(msg)); } catch (err) { // 可自行处理错误,比如消息不存在、无权限等场景 console.error('编辑消息失败:', err); } })
额外注意事项
- 如果你还在使用discord.js v12/v13版本,消息事件名还是
message,只需要修改fetchMessage部分即可 - 如果output返回的是embed等非纯文本内容,需要对应调整edit的传参格式,纯字符串可以直接传入
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

