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;
});
我希望我的机器人检查它所在的每个公会,并在发现公会没有角色时创建一些角色。
我的代码如下所示:
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;
});