创建角色后,是否可以将角色添加到成员? (Discord.js v12)

时间:2020-07-03 19:32:42

标签: javascript node.js discord.js

我试图创建一个新角色,并在一次运行命令时将其添加到成员中,但是似乎我必须运行两次命令(一次:要创建的角色,两次:要使该角色被添加到该成员中。

我想这是由于以下错误: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);});
}

是否有解决方法,以便在角色创建后立即将其添加到成员中?

1 个答案:

答案 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);});
  }
}