为什么按名称查找我的角色返回未定义


Gang.findOne({leaderUserID: message.author.id, leaderUserName: message.member.user.tag, serverID: message.guild.id}, (err, gang) => {
if(err) console.log(err);

let embed = new Discord.MessageEmbed()
.setTitle("Gang")
.setColor("4000FF")
.setThumbnail(message.author.displayAvatarURL)

gangName = message.content.substring(message.content.indexOf(" ") + 1, message.content.length);
if(!gang){
const newGang = new Gang({
leaderUserID: message.author.id,
leaderUserName: message.member.user.tag,
serverID: message.guild.id,
gangName: gangName,
points: "1"
});
guild.roles.create({
data: {
name: gangName,
color: `GREY`
},
reason: `Gang created by ${message.member.user.tag} at ${message.timestamp}`
});


let role = message.guild.roles.cache.find(guild => guild.name === gangName);

console.log(`role = ${role}`);
member.roles.add(role);


newGang.save().catch(err => console.log(err));


embed.addField("Gang Creation", "-15 points", true);
embed.addField("Gang Name", gangName, true);
message.channel.send(embed);
return;

除了分配角色之外,一切都正常。我将帮派名称设置为命令的第二部分,我用这个名称创建角色,我将角色设置为let role = message.guild.roles.cache.find(guild => guild.name === gangName);但是随后,角色的console.log显示";未定义";。

它是如何定义的?我只是创建了这个角色,然后搜索它。

guild.roles.create是一个异步函数,因此您可以使用await

let role = await guild.roles.create({
data: {
name: gangName,
color: `GREY`
},
reason: `Gang created by ${message.member.user.tag} at ${message.timestamp}`
});
console.log(`role = ${role}`);
member.roles.add(role);

最新更新