如何交换具有特定角色的所有成员的昵称中的字符?

时间:2020-01-21 23:05:20

标签: node.js discord discord.js

我想创建一个命令,用所有名为“ tokuchi”的成员的昵称中的-字符替换所有破折号()。

这是我到目前为止所拥有的:

exports.run = async (client, member, message, args) => {
    let tokuchi = message.guild.roles.find(role => role.name === "tokuchi");
    let tokaci = message.guild.members.filter(member => {
        return member.roles.some(r=>["tokuchi"].includes(r.name));
    });
    const Tokuchi = tokaci.user.username.replace(`⍭`, '-');
    tokuchi.members.forEach(u => {
        u.setNickname(Tokuchi);
    });
};

1 个答案:

答案 0 :(得分:1)

尝试给变量起一个清晰的名称,这将增加代码的可读性。 member.user.username不是不一致的显示名称。因此,此方法不会替换显示用户名。要获取显示名称,可以使用displayName属性。 tokaci已经返回成员集合,因此您不需要使用tokaci.memebers

使用角色ID,否则,如果角色要重命名,您将不得不重写大部分代码


exports.run = async (client, member, message, args) => {
    let tokuchi = message.guild.roles.find(role => role.name === "tokuchi");
    let tokaci = message.guild.members.filter(member => {
        return member.roles.some(r=>["tokuchi"].includes(r.name));
    });
    tokaci.forEach(member => {
        if(member.manageable) {
            let newNickName = member.displayName.replace(`⍭`, '-');
            member.setNickname(newNickName)
            .catch(console.error)
        }
    });
};