簡體   English   中英

使用 Discord JS 創建角色

[英]Create a role with 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);

提前致謝!

我很確定guild沒有在您的代碼中定義。 rolesGuild一個屬性,所以你需要一個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)

只要您有角色管理器,您就應該根據文檔具有創建功能

所以我解決這個問題的建議是看看哪里出了問題。 我已經使用 typeScript 中的 createGuild 事件完成了它。 這將在機器人加入新公會時創建角色。

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

另請注意,您需要足夠高的權限才能實際創建角色。

ps:出現錯誤時提供錯誤會很有用(完整錯誤)

如果您嘗試執行 guild.create.roles 控制台會給您一個錯誤消息: guild <= is not defined!

您需要編寫message.guild.create.roles而不是the guild.create.roles ,在此之后,您將獲得創建的角色。

創建角色的示例代碼,帶有“調試消息”:

message.channel.send('creating a role')
        message.guild.roles.create({
            data: {
                name: 'Testing Role',
                color: 'GREY'
            },
            reason: 'Stackoverflow.com - created for user14470589'
        })
        .then((res => {
            message.channel.send(`debug result:\n${res}`)
        })).catch((err => {
            message.channel.send(`error:\n${err}`)
        }))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM