使用Discord JS创建角色

时间:2020-10-23 02:08:58

标签: javascript node.js discord discord.js

我正在制造一个Discord JS机器人,该机器人应该具有一个静音功能,该功能将一个角色分配给成员,这样他们就不能发短信了。

我试图在网上寻找如何创建角色(甚至是Discord JS文档),但无济于事。

我已经尝试过下面的代码,但是它不起作用(直接从https://discord.js.org/#/docs/main/stable/class/RoleManager?scrollTo=create中拉出)。

guild.roles.create({
        data: {
            name: 'Super Cool People',
            color: 'BLUE',
        },
        reason: 'we needed a role for Super Cool People',
    })
    .then(console.log)
    .catch(console.error);

谢谢!

2 个答案:

答案 0 :(得分:1)

我很确定在您的代码中未定义guildrolesGuild的属性,因此您需要一个Guild类来访问RoleManager并创建一个Role


如果代码是在命令中执行的,则可以使用message.guild来获取Guild,否则,您需要手动获取Guild

这是一个简单的用法示例:

第一个场景

client.on("message", message => {
    if (message.author.bot) return false;
    if (message.author.id !== message.guild.ownerID) return false;

    message.guild.roles.create({
        data: {
            name: "Muted",
            permissions: [],
            color: "RED"
        },
        reason: "Created the mute role."
    }).catch(console.log)
});

第二种情况

const Guild = client.guilds.cache.get("1234567890123456789");

Guild.roles.create({
    data: {
        name: "Muted",
        permissions: [],
        color: "RED"
    },
    reason: "Created the mute role."
}).catch(console.log)

答案 1 :(得分:0)

只要你有一个角色管理器,你就应该根据docs

所以我解决这个问题的建议是看看哪里出了问题。我已经使用 typeScript 中的 createGuild 事件完成了它。这将在机器人加入新公会时创建角色。

client.on('guildCreate', async guild => {
  await guild.roles.create({ data: { name: 'roleName' } });
});

另请注意,您需要足够高的权限才能实际创建角色。

ps:在出现错误时提供错误会很有用(完整错误)