首页 > 解决方案 > 如何在 Discord.js 中获取名称数组

问题描述

我是 discord.js 的新手,我无法获取服务器所有成员的姓名。这是代码:

**const List = bot.guilds.cache.get("88888952704"); // Getting the guild.
const Members = List.members.map((member) => {
    member.displayName;
});**

//Basic hello
bot.on("message", (msg) => {
    let args = msg.content.slice(Prefix.length).split(" ");

    switch (args[0]) {
        //For Testing
        case "ping":
            msg.channel.send("Pong!");
            break;
        //Now Serious
        case "info":
            if (args[1] == "version") {
                msg.reply("I am currently at version " + botVersion + "!");
            } else if (args[1] == null) {
                msg.channel.send(
                    "Please be specific about what info you want like: !info version "
                );
            }
            break;
        case "cleartill":
            if (!args[1]) {
                msg.reply("Please be specific: Error 01B%s@1");
            } else {
                msg.channel.bulkDelete(args[1]);
                break;
            }
        case "embed":
            const embed = new Discord.MessageEmbed()
                .setTitle("User Information:")
                .addField("Player Name:", msg.author.username)
                .setColor("#FFFF00")
                .addField("Version:", botVersion);
            msg.channel.send(embed);
            break;
        case "whoisa":
            if (args[1] == null) {
                msg.reply("Please enter the second argument.");
            } else {
                msg.channel.send(Members + " is a " + args[1]);
            }
    }
});

我想获取服务器中任何人的随机名称并回复输入的人!whoisa [something]并给出答案[something][args[1]]. 请帮忙。提前致谢!

标签: javascriptnode.jsdiscorddiscord.js

解决方案


拥有公会后,您可以使用members.fetch(). 它返回一个具有.map()方法的集合,因此您可以遍历该集合并返回它们displayName,如下所示:

const guild = bot.guilds.cache.get("824977762186952704");
const members = await guild.members.fetch();

const names = members.map((member) => member.displayName);

// names is an array of names
console.log(names);

集合还有一种.random()方法,您可以使用该方法从该集合中获取随机成员。返回的成员是 a GuildMember,因此您可以获取其显示名称、向他们发送 DM 等。

// randomMember is a guild member
const randomMember = members.random();

如果你想在你的消息事件中使用它,你甚至可以从消息中获取公会。正如我在await这里使用的那样,请确保将async关键字添加到bot.on("message", async (msg) => {.

case 'whoisa':
  if (!args[1]) 
    return msg.channel.send('Please enter an argument');

  const members = await msg.guild.members.fetch();

  msg.channel.send(`${members.random()} is a ${args.slice(1).join(' ')}`);

在此处输入图像描述


推荐阅读