服务器成员计数 DiscordJS V13

Server Member Count DiscordJS V13

我的代码需要帮助。我的计划是制作一个命令来显示我的服务器上有多少成员。有人能帮我吗?我只想添加更多详细信息,因为如果我的详细信息很短,我将无法上传我的问题。如果有人想帮助我使用我的 discord 机器人,或者可能会教我怎么做,因为我只是一个尝试学习的初学者 discord.js。在 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"]
}

小提示,如果您发现自己一遍又一遍地输入相同的内容(通常超过 2 次),请将其设为常量

例如

.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...

除此之外,下面是一个工作示例,如果需要,请随意进一步自定义。顺便说一句 .setAuthor.setFooter 必须作为对象而不是字符串传递,这在下面的答案中进行了演示。

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"],
};

忽略我代码中的第一行ghost = client

请求

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