Discord.js 将数组中的 ID 替换为与该 ID 匹配的用户的昵称?

Posted

技术标签:

【中文标题】Discord.js 将数组中的 ID 替换为与该 ID 匹配的用户的昵称?【英文标题】:Discord.js replace ID inside array with the nickname of the user matching that ID? 【发布时间】:2020-05-03 17:57:23 【问题描述】:
if (message.content === '.mutelist') 

        var muteIdsList = muteIds.slice();

        var memberList = message.guild.members.array();

        var convertList = muteIdsList.indexOf(`$memberList`);

        console.log(`$memberList`);

        if (convertList !== -1) 

            muteIdsList[convertList] = `$guild.member.nickname`

            console.log('Match!')
        

        message.channel.send(`$muteIdsList`)
        .catch(function(err) 

            if (muteIds.length >= 0) 

                message.channel.send('Nobody is being muted at this time!');
            

            else 

                message.channel.send('There was an unknown error that occured, try running the command again!');
             
        )
    

到目前为止似乎没有任何效果,memberList 通过获取公会中的所有用户 ID 来满足我的要求,但将它们显示为 而不仅仅是普通 ID,因此它不匹配任何项目在我拥有的数组内。我想要发生的事情是,我制作了一个数组的副本,用于保存要静音的人的 ID,然后获取公会中的所有 ID,遍历复制的数组并找到所有匹配项,然后替换 ID在复制的数组中使用与该特定 ID 匹配的用户的昵称。

【问题讨论】:

尽量将您的问题描述减少到最少的测试用例和问题,谢谢。 我给出的描述在没有正确解释问题的情况下尽可能简单。 【参考方案1】:

您可以使用 message.guild.members 访问成员到昵称的映射。

    var muteIdsList = muteIds.slice(); // [1]
    var memberList = message.guild.members; // 1: nickname1, 2: nickname2
    var mutedNicknameList = muteIdsList.map(x => memberList[x]); // [nickname1]

【讨论】:

数据只是填充了人们通过运行以 ID 作为参数的命令添加的任何 ID 的数组,仅此而已,但我将如何创建数组的映射并设置那些带有昵称的 ID 的值? 您能调试一下并告诉我您从不和谐中获得的每个列表的外观吗?我仍然对您从哪里获得昵称列表以及该数据的外观感到困惑。 我没有得到昵称列表,我得到的是公会中所有用户 ID 的列表,并将它们与数组中的 ID 匹配。 如果您没有获得昵称,您将如何将用户的 id 与他们的昵称匹配? 这就是我不太确定的,甚至是如何去匹配 ID 并获得昵称。

以上是关于Discord.js 将数组中的 ID 替换为与该 ID 匹配的用户的昵称?的主要内容,如果未能解决你的问题,请参考以下文章

如何将服务器中每个用户的 id 放入数组中? (Discord.js v12)

替换 Discord.JS 中的某些字符

DISCORD.JS |我将如何执行升级和降级命令

将数组划分为嵌入页面 - Discord.JS

如何将 lib.js 文件中的 Discord.js 函数调用到 index.js 中?

如何添加 ID 保存在 JSON 文件 discord.js v12 中的角色?