Discord.js v13调用messages.fetch后使用.then方法报类型错误
报错原因
你调用interaction.channel.messages.fetch()时已经使用了await关键字,await会直接等待Promise执行完成并返回解析后的消息集合对象,而非Promise实例本身。只有Promise对象才拥有then方法,因此你对解析完成的普通对象调用then会触发该类型错误。
修复方案
有两种可行的修改方式,可根据你的代码习惯选择:
- 方式一:移除
await,保留Promise链式调用逻辑
let messages = interaction.channel.messages.fetch(); messages.then(async (messages) => { const output = messages.array().reverse().map(m => `${new Date(m.createdAt).toLocaleString('en-US')} - ${m.author.tag}: ${m.attachments.size > 0 ? m.attachments.first().proxyURL : m.content}`).join('\n'); console.log(output) })
- 方式二:保留
await,移除then调用,直接使用返回的消息集合,代码更简洁
let messages = await interaction.channel.messages.fetch(); const output = messages.array().reverse().map(m => `${new Date(m.createdAt).toLocaleString('en-US')} - ${m.author.tag}: ${m.attachments.size > 0 ? m.attachments.first().proxyURL : m.content}`).join('\n'); console.log(output)
内容的提问来源于stack exchange,提问作者Darek
相关产品推荐
相关产品推荐

