Discord.js 创建一个角色并在之后立即获取它的id

Discord.js create a role and get its id immediatly after

我希望我的机器人检查它所在的每个公会,并在发现公会没有角色时创建一些角色。

我的代码如下所示:

let newRoles = {
  'guildId': '',
  'rank1': '', // the role id
  'rank2': ''
}

client.guilds.forEach(guild => {
  checkHasRoles(guild.id) // returns a Boolean
  if (hasRoles === false) {
    newRoles.guildId = guild.id
    guild.roles.create({
      data: {
        name: 'rank1',
        color: '992d22'
      }
    })
    role = guild.roles.cache.find(role => role.name === 'rank1')
    newRoles['rank1'] = role.id
    // The same for the other roles
    rolesArray.push(newRoles)
    save(rolesArray, file)
    rolesArray = load(file)
  } 
})

我得到的错误是:(node:11833) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'id' of undefined。我想同时调用 create() 和 find() 函数有问题,但我想不出一种不同的方法。

如果你能给我一个详细的解释,我将不胜感激。我是新手。

您必须为此使用承诺,而不是尝试寻找新角色,因为这行不通。

  message.guild.roles.create({
      data: {
        name: 'rank1',
        color: '992d22'
      }
    }).then(role => {
       let roleId = role.id;
  });