首页 > 解决方案 > Discord.js 将数组中的 ID 替换为与该 ID 匹配的用户的昵称?

问题描述

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在复制的数组中,用户的昵称与该特定 ID 匹配。

标签: javascriptarraysdiscord.js

解决方案


您可以使用 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]

推荐阅读