【问题标题】:Create a role with Discord JS使用 Discord JS 创建角色
【发布时间】:2021-02-06 02:23:13
【问题描述】:

我正在制作一个 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);

提前致谢!

【问题讨论】:

  • 这能回答你的问题吗? How to create a role with discord.js
  • 有趣的是,我查看了那个确切的帖子。但是不,它没有用。
  • 没有工作,你的意思是它抛出了一个错误还是只是没有添加角色?
  • 如果这是由命令触发的,请尝试 message.member.guild.roles.create({...})

标签: javascript node.js discord discord.js


【解决方案1】:

如果您尝试执行 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}`)
        }))

【讨论】:

    【解决方案2】:

    只要你有角色管理器,你就应该有根据docs的创建功能

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

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

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

    ps:当你有错误时提供错误会很有用(完整的错误)

    【讨论】:

      【解决方案3】:

      我很确定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)
      

      【讨论】:

      • 不幸的是,这不起作用。我复制/粘贴了您的代码(当然要调整变量),但它抛出了一个错误:message.guild.roles.create({ is not a function。
      猜你喜欢
      • 2021-12-20
      • 1970-01-01
      • 2017-11-03
      • 2020-12-25
      • 1970-01-01
      • 2020-08-06
      • 2018-06-26
      • 2020-12-21
      • 2020-08-26
      相关资源
      最近更新 更多