Javascript 尝试获取5条消息,然后对它们做出反应-discord.js

Javascript 尝试获取5条消息,然后对它们做出反应-discord.js,javascript,discord.js,fetch,message,Javascript,Discord.js,Fetch,Message,我试图从一个频道中获得5条以前的消息,然后用discord.js对它们做出反应 message.channel.messages.fetch(channelID).then(channel => { channel.messages.fetch({limit : 5}).then(message => { message.react("✅"); }) }) 我收到的错

我试图从一个频道中获得5条以前的消息,然后用discord.js对它们做出反应

message.channel.messages.fetch(channelID).then(channel => {
            channel.messages.fetch({limit : 5}).then(message => {
                message.react("✅");
            })
        })

我收到的错误:
unhandledPromisejectionWarning:TypeError:无法读取未定义的属性“messages”

考虑到您已经有一个频道作为消息属性,您应该执行以下操作:

message.channel.messages.fetch({ limit: 5 }).then(message => {
    message.react("✅");
})

问题是
MessageManager\fetch()
返回所有已获取消息的集合(映射)。您正试图直接在本质上是多条消息的列表上调用
.react()
。使用
.forEach()
对每条消息作出反应

message.channel.messages.fetch(channelID).then(channel => {
            channel.messages.fetch({limit : 5}).then(messages => {
                messages.forEach(msg => {
                   msg.react('✅')
                })
            })
       })

代码中有两个问题(其中一个问题在这里被一些人忽略了)

您的第一个错误出现在以下行中,说明:

message.channel.messages.fetch(channelID)。然后(channel=>{
Channel#messages#fetch()
方法不返回Channel对象,而是返回message对象。由于您试图从Channel对象获取消息,因此您应该获取一个频道而不是消息。请尝试用以下内容替换您的行:

client.channels.fetch(channelID).then(channel=>{…}
第二个问题是,在Discord.js中获取多条消息时,该方法返回的是对象的集合,而不是对象。与常规的单个消息对象不同,消息对象集合没有
react()
方法属性,应该使用
forEach()对其进行拆分
iterator,分别在每条消息之间添加反应,如下所示:

client.channels.fetch(channelID)。然后(channel=>{
channel.messages.fetch({limit:5})。然后(messages=>{
messages.forEach(异步消息=>{
等待消息,做出反应✅') // 建议先等待反应方法,然后再进行下一个反应方法。
})
})
})

您好,谢谢您的回答,我仍然收到相同的错误,我已经在这里初始化了我的频道
let channel=guild.channels.cache.find(ch=>ch.id==)
请您记录
频道
变量,看看它是否被正确找到?嗯,似乎频道被正确找到了。消息也是如此。您能更新问题描述吗,因为您在上一期评论中编写的代码与您在原版中发布的代码大不相同?谢谢k谢谢!你解决了我的问题!@AlexCh没问题!你介意把我的答案标记为正确的,这样其他人也会发现它同样有用吗?