首页 > 解决方案 > 使用 discord.js 创建角色

问题描述

我正在尝试使用不和谐的 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);
    }
}

标签: javascriptdiscord.js

解决方案


您的代码无法正常工作的原因是因为自discord.jsv12 以来发生了很多变化。

你不能再使用.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);
    }
}

推荐阅读