【问题标题】:Discord.Js - Get a list of all user's sent messages?Discord.Js - 获取所有用户已发送消息的列表?
【发布时间】:2020-03-10 08:41:24
【问题描述】:

我正在使用节点中的 Discord.js 编写一个 Discord 机器人,并想知道是否有任何方法可以获取所有用户消息的数组或集合。我试过浏览一些成员收藏,但似乎找不到任何东西。会很有帮助,谢谢!

【问题讨论】:

    标签: node.js collections discord discord.js


    【解决方案1】:

    我假设您使用的是 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 条消息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 2020-10-02
    • 2011-05-29
    • 1970-01-01
    • 2020-08-04
    相关资源
    最近更新 更多