【问题标题】:How to create a new role and assign it to all users of a guild?Discord.js:如何创建一个新角色然后将其分配给所有用户?
【发布时间】:2021-05-01 19:17:57
【问题描述】:

我尝试制作我的第一个不和谐机器人。机器人应该创建一个新角色,然后将其分配给公会的所有用户。我怎样才能实现它?

这是我的代码,虽然它不起作用:

bot.on('guildCreate', function(guild) {
    guild.roles.create({
        data: {
            name: 'Authorized2',
            color: 'GREEN',
        },
        reason: 'we needed a role for Super Cool People',
    }).then(guild.members.forEach(member => member.roles.add(role)));
});

我收到以下错误:guild.members.forEach is not a function

【问题讨论】:

    标签: javascript discord discord.js


    【解决方案1】:

    您似乎需要使用members.cache 访问成员数组

    bot.on('guildCreate', function(guild) {
        guild.roles.create({
            data: {
                name: 'Authorized2',
                color: 'GREEN',
            },
            reason: 'we needed a role for Super Cool People',
        }).then(guild.members.cache.forEach(member => member.roles.add(role)));
    });
    

    【讨论】:

      【解决方案2】:

      两件事:

      • members 是一个Manager,所以你需要访问.cache 属性才能使用.forEach 方法
      • 您尝试在member.roles.add(role) 中添加role,当您在then() 方法中收到role 时,您忘记添加箭头函数
      bot.on('guildCreate', (guild) => {
        guild.roles
          .create({
            data: {
              name: 'Authorized2',
              color: 'GREEN',
            },
            reason: 'we needed a role for Super Cool People',
          })
          .then((role) =>
            guild.members.cache.forEach((member) => member.roles.add(role)),
          );
      });
      

      【讨论】:

      • 我们进展:当机器人进入服务器时,角色被创建但只分配给机器人而不是服务器上已经存在的其他成员
      猜你喜欢
      • 2021-06-24
      • 2017-07-17
      • 2019-08-11
      • 2019-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多