【发布时间】:2020-03-10 08:41:24
【问题描述】:
我正在使用节点中的 Discord.js 编写一个 Discord 机器人,并想知道是否有任何方法可以获取所有用户消息的数组或集合。我试过浏览一些成员收藏,但似乎找不到任何东西。会很有帮助,谢谢!
【问题讨论】:
标签: node.js collections discord discord.js
我正在使用节点中的 Discord.js 编写一个 Discord 机器人,并想知道是否有任何方法可以获取所有用户消息的数组或集合。我试过浏览一些成员收藏,但似乎找不到任何东西。会很有帮助,谢谢!
【问题讨论】:
标签: node.js collections discord discord.js
我假设您使用的是 Discord.js 版本 12.0.2。您可以使用一个函数来执行此操作,该函数需要参数 guildID(公会的 ID)和 userID(您希望所有消息来自的成员)
然后,您希望在每个频道中获取尽可能多的消息。你可以达到的最大值是 100。
如果 message#author.id 等于 userID 参数,我们现在过滤所有获取的消息。
想做什么就做什么。 msgs 是过滤后的消息。例如,您可以记录消息的所有内容,并将它们的通道记录到控制台(这就是我所做的)
async function userMessages(guildID, userID){
client.guilds.cache.get(guildID).channels.cache.forEach(ch => {
if (ch.type === 'text'){
ch.messages.fetch({
limit: 100
}).then(messages => {
const msgs = messages.filter(m => m.author.id === userID)
msgs.forEach(m => {
console.log(`${m.content} - ${m.channel.name}`)
})
})
} else {
return;
}
})
}
【讨论】:
before 选项,否则这将被限制为每个通道通过 100 条消息。