Search code examples
node.jsdiscorddiscord.js

(Discord.js) How to get a full list of Members instead of only the cached ones


I'm trying to export a full list of Members, including offline ones into a .csv using the code below. Using "message.guild.members" though, I only catch the cached Members. How could I change it to get everybody, non-cached Members included?

const auditUsers = (message) => {
    console.log(message)
    let allMembers = []
    for (let m of message.guild.members.values()){
        if (m.user.bot == true) continue
        let member = {
            Name: m.user.username,
            Tag: m.user.tag,
            UserID: `<@${m.user.id}>`,
            JoinDate: m.joinedAt.toDateString()
        }
        let memberRoles = []
        for (let r of m.roles.values()){
            if (r.name != "@everyone") memberRoles.push(r.name)
        }
        member.Roles = memberRoles.join(', ')
        allMembers.push(member)
    }

    const json2csvParser = new Json2csvParser()
    const csv = json2csvParser.parse(allMembers)
    fs.writeFileSync(`./${message.guild.name}_audit.csv`, csv, {flag: 'w'}, function(err){
        if (err) consoleLog('Error saving CSV file:' + err.message, "ERR")
    })
}

Source: https://github.com/awwbots/Dis-GuildAudit-CSV


Solution

  • Run fetchMembers() first before accessing the users.