我试图创建一个新角色,并在一次运行命令时将其添加到成员中,但是似乎我必须运行两次命令(一次:要创建的角色,两次:要使该角色被添加到该成员中。
我想这是由于以下错误:TypeError [INVALID_TYPE]: Supplied roles is not an Role, Snowflake or Array or Collection of Roles or Snowflakes.
if (command === 'test') {
if (!message.mentions.users.size) {
return message.reply('You need to tag a user!');
}
const member = message.mentions.members.first();
const testRole = message.guild.roles.cache.find(role => role.name === 'TestRole');
if (!testRole) {
message.guild.roles.create ({
data: {
name: 'TestRole',
color: 'RANDOM',
},
}).catch(() => {
message.reply('Unable to create role');
});
}
member.roles.add(testRole).catch((error) => {console.log(error);});
}
是否有解决方法,以便在角色创建后立即将其添加到成员中?
答案 0 :(得分:0)
由于roles.create
返回了一个承诺,因此您可以使用.then()
将角色添加到成员中
if (command === 'test') {
if (!message.mentions.users.size) {
return message.reply('You need to tag a user!');
}
const member = message.mentions.members.first();
const testRole = message.guild.roles.cache.find(role => role.name === 'TestRole');
if (!testRole) {
message.guild.roles.create ({
data: {
name: 'TestRole',
color: 'RANDOM',
},
})
.then((role) => {
member.roles.add(testRole)
})
.catch(() => {
message.reply('Unable to create role');
});
} else {
member.roles.add(testRole).catch((error) => {console.log(error);});
}
}