我正在尝试使用discord API创建一个机器人,以使其能够创建角色并为其添加人员。我不确定为什么我的代码无法正常工作。
async function role(message){
try {
let guild = client.guild.get(236824834066219009);
guild.roles.create({
data:{
name:"asd",
color:"grey",
},
reason:"asd",
})
let role = message.guild.roles.find(r => r.name === "asd");
let user = 236824834066219009;
await user.addrole(role).catch(console.error);
} catch (error) {
console.log(error);
}
}
答案 0 :(得分:0)
您的代码无法正常运行的原因是因为discord.js
v12版本以来发生了很多更改。
您不能再在.find()
上使用roles
,而必须先访问其cache
,因此需要用let role = message.guild.roles.find(r => r.name === "asd");
替换let role = message.guild.roles.cache.find(r => r.name === "asd");
您也无法使用addrole()
添加角色,需要使用roles.add()
,因此需要将user.addrole(role)
替换为user.roles.add(role)
您也可以不必查找role
来提高代码效率,只需使用.then()
即可将角色添加到user
中,您也可以通过与guild
一起用作函数中的参数,如下所示:
async function role(message, user, guild){
try {
guild.roles.create({
data:{
name:"asd",
color:"grey",
},
reason:"asd",
}).then((role) => user.roles.add(role)).catch(console.error);
} catch (error) {
console.log(error);
}
}