'Server Member Count DiscordJS V13

I need help with my code. My plan is to make a command that shows how many members I have on my server. Can someone help me? I'm just going to add more details since I can't upload my question if my details is short. If someone wants to help me with my discord bot or maybe teach me how to because I'm just a beginner trying to learn discord.js. Add me on Twitter (TwT) : KiseeIsHere

const Discord = require("discord.js");
const {MessageEmbed} = require("discord.js");

module.exports.run = async (client, message, args) => {
    try {
      await message.guild.members.fetch().catch(() => {});
      
        message.reply({embeds: [new Discord.MessageEmbed()
        .setAuthor("Kisee")
        .setColor("2F3136")
        .addField(message.guild.memberCount + "\`", true)
        .addField(message.guild.members.cache.filter(member => !member.user.bot).size + "\`", true)
        .addField(message.guild.members.cache.filter(member => member.user.bot).size + "\`", true)
        
        .addField(message.guild.members.cache.filter(member => member.presence && member.presence && member.presence.status != "offline").size + "\`", true)
        .addField(message.guild.members.cache.filter(member => !member.user.bot && member.presence && member.presence && member.presence.status != "offline").size + "\`", true)
        .addField(message.guild.members.cache.filter(member => member.user.bot && member.presence && member.presence && member.presence.status != "offline").size + "\`", true)
        
        .addField(message.guild.members.cache.filter(member => member.presence && member.presence && member.presence.status == "idle").size + "\`", true)
        .addField(message.guild.members.cache.filter(member => !member.user.bot && member.presence && member.presence && member.presence.status == "idle").size + "\`", true)
        .addField(message.guild.members.cache.filter(member => member.user.bot && member.presence && member.presence && member.presence.status == "idle").size + "\`", true)
        
        .addField(message.guild.members.cache.filter(member => member.presence && member.presence && member.presence.status == "dnd").size + "\`", true)
        .addField(message.guild.members.cache.filter(member => !member.user.bot && member.presence && member.presence && member.presence.status == "dnd").size + "\`", true)
        .addField(message.guild.members.cache.filter(member => member.user.bot && member.presence && member.presence && member.presence.status == "dnd").size + "\`", true)
        
        .addField(message.guild.members.cache.filter(member => !member.presence || member.presence && member.presence.status == "offline").size + "\`", true)
        .addField(message.guild.members.cache.filter(member => !member.user.bot && (!member.presence || member.presence && member.presence.status == "offline")).size + "\`", true)
        .addField(message.guild.members.cache.filter(member => member.user.bot && (!member.presence || member.presence && member.presence.status == "offline")).size + "\`", true)
        .setTimestamp()
      ]});
    } catch (e) {
      console.log("error")
      return message.reply({embeds: [new MessageEmbed()
        .setColor("2F3136")
        .setFooter("error")
        .setTitle("error")
        .setDescription("error")
      ]});
    }
}

module.exports.config = {
    name: "membercount",
    aliases: ["mc"]
}


Solution 1:[1]

Small hint, if you find yourself typing the same thing over and over (generally more than 2 times), make it a constant

For example

.addField(message.guild.members.cache...
.addField(message.guild.members.cache...
.addField(message.guild.members.cache...
.addField(message.guild.members.cache...
.addField(message.guild.members.cache...

// more efficient usage
const allMembers = message.guild.members.cache

.addField(allMembers...
.addField(allMembers...
.addField(allMembers...
.addField(allMembers...
.addField(allMembers...

That aside, below is a working example, feel free to customize further if needed. BTW .setAuthor and .setFooter must be passed as an object not a string, that is demonstrated below in the answer.

const {
    MessageEmbed,
} = require("discord.js");

module.exports.run = async (client, message, args) => {
    const allUsers = client.users.cache;
    const allMembers = message.guild.members.cache;
    const embed = new MessageEmbed()
        .setAuthor({
            name: "Kisee",
        })
        .setColor("2F3136")
        .addFields({
            name: `Total Members`,
            value: `${allUsers.size}`,
            inline: true,
        }, {
            name: `Users`,
            value: `${allUsers.filter(user => !user.bot).size}`,
            inline: true,
        }, {
            name: `Bots`,
            value: `${allUsers.filter(user => user.bot).size}`,
            inline: true,
        }, {
            name: `Online`,
            value: `${allMembers.filter(member => !member.user.bot && member.presence && member.presence.status === 'online').size}`,
            inline: true,
        }, {
            name: `Offline`,
            value: `${allMembers.filter(member => !member.user.bot && !member.presence || member.presence.status === 'offline').size}`,
            inline: true,
        }, {
            name: `Idle`,
            value: `${allMembers.filter(member => !member.user.bot && member.presence && member.presence.status === 'idle').size}`,
            inline: true,
        }, {
            name: `DND`,
            value: `${allMembers.filter(member => !member.user.bot && member.presence && member.presence.status === 'dnd').size}`,
            inline: true,
        })
        .setTimestamp();
    message.reply({
        embeds: [embed],
    });
};

module.exports.config = {
    name: "membercount",
    aliases: ["mc"],
};

proof

ignore the first line ghost = client in my code

Requesting

const client = new Client({
    intents: // whatever you have here,
    partials: // not necessary but may also be present,
})

Privileged Intents

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1