尝试获取 5 条消息然后对其做出反应 - discord.js
Trying to fetch 5 messages and then react to them - discord.js
我正在尝试从频道获取 5 条先前的消息,然后用 discord.js
对它们做出反应
message.channel.messages.fetch(channelID).then(channel => {
channel.messages.fetch({limit : 5}).then(message => {
message.react("✅");
})
})
我得到的错误:UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'messages' of undefined
考虑到您已经有一个频道作为消息 属性 您应该这样做:
message.channel.messages.fetch({ limit: 5 }).then(message => {
message.react("✅");
})
问题是 MessageManager#fetch()
returns 所有获取消息的集合(地图)。您正在尝试直接在本质上是多条消息列表的内容上调用 .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).then(channel => {
Channel#messages#fetch()
方法不是return一个Channel对象,而是一个消息对象。由于您正在尝试从 channel 对象获取消息,因此您应该获取一个频道而不是一条消息。尝试用以下内容替换您的行:
client.channels.fetch(channelID).then(channel => { ... }
第二个问题是,当您在 Discord.js 中获取多条消息时,方法 return 是一个 对象集合 而不是一个目的。与常规的单个消息对象不同,消息对象的集合没有 react()
方法 属性,应该使用 forEach()
迭代器拆分以在每个消息之间单独添加反应,如下所示:
client.channels.fetch(channelID).then(channel => {
channel.messages.fetch({ limit: 5 }).then(messages => {
messages.forEach(async message => {
await message.react('✅') // It is recommended to await a reaction method before going on to the next one.
})
})
})
我正在尝试从频道获取 5 条先前的消息,然后用 discord.js
对它们做出反应message.channel.messages.fetch(channelID).then(channel => {
channel.messages.fetch({limit : 5}).then(message => {
message.react("✅");
})
})
我得到的错误:UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'messages' of undefined
考虑到您已经有一个频道作为消息 属性 您应该这样做:
message.channel.messages.fetch({ limit: 5 }).then(message => {
message.react("✅");
})
问题是 MessageManager#fetch()
returns 所有获取消息的集合(地图)。您正在尝试直接在本质上是多条消息列表的内容上调用 .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).then(channel => {
Channel#messages#fetch()
方法不是return一个Channel对象,而是一个消息对象。由于您正在尝试从 channel 对象获取消息,因此您应该获取一个频道而不是一条消息。尝试用以下内容替换您的行:
client.channels.fetch(channelID).then(channel => { ... }
第二个问题是,当您在 Discord.js 中获取多条消息时,方法 return 是一个 对象集合 而不是一个目的。与常规的单个消息对象不同,消息对象的集合没有 react()
方法 属性,应该使用 forEach()
迭代器拆分以在每个消息之间单独添加反应,如下所示:
client.channels.fetch(channelID).then(channel => {
channel.messages.fetch({ limit: 5 }).then(messages => {
messages.forEach(async message => {
await message.react('✅') // It is recommended to await a reaction method before going on to the next one.
})
})
})