Discord.js 创建一个角色并在之后立即获取它的 id
Posted
技术标签:
【中文标题】Discord.js 创建一个角色并在之后立即获取它的 id【英文标题】:Discord.js create a role and get its id immediatly after 【发布时间】: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() 函数有问题,但我想不出一种不同的方法。
如果您能给我详细的解释,我将不胜感激。我是新手。
【问题讨论】:
【参考方案1】:您必须为此使用承诺,而不是尝试寻找新角色,因为这不会起作用。
message.guild.roles.create(
data:
name: 'rank1',
color: '992d22'
).then(role =>
let roleId = role.id;
);
【讨论】:
以上是关于Discord.js 创建一个角色并在之后立即获取它的 id的主要内容,如果未能解决你的问题,请参考以下文章