我想创建一个命令,用所有名为“ 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);
});
};
答案 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)
}
});
};