【问题标题】:Discord.js create a role and get its id immediatly afterDiscord.js 创建一个角色并在之后立即获取它的 id
【发布时间】:2021-04-02 02:00:33
【问题描述】:

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

我的代码如下所示:

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() 函数有问题,但我想不出一种不同的方法。

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

【问题讨论】:

    标签: javascript discord.js roles


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-10-24
      • 2021-04-09
      • 2020-07-26
      • 2021-06-24
      • 2023-03-22
      • 2021-04-25
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      相关资源
      最近更新 更多