【问题标题】:Listing every user that has a specific Discord Role列出具有特定 Discord 角色的每个用户
【发布时间】:2021-03-24 18:54:03
【问题描述】:

我希望运行一个命令,列出具有指定 Discord 角色的每个人 [使用该命令,我将提供相关角色的 ID] 文档和谷歌搜索似乎是一个死胡同,因为 Discord 更新了他们的功能。最大的问题是,我在这里使用的当前方法仅在用户在线/最近输入过并且他们将与他们的角色一起存储在缓存中时才有效。我希望有一个无论如何都列出角色的。

case 'rolecheck':
        var roleneeded = message.content.substring(prefix.length).split(' ');
    if(message.content.startsWith("$rolecheck")){
          const ListEmbed = new Discord.MessageEmbed()
              .setTitle('Users with this role:')
                            .setDescription(message.guild.roles.cache.get(roleneeded[1]).members.map(m=>m.user.tag).join('\n'));
                    }

  break;

【问题讨论】:

    标签: javascript discord discord.js


    【解决方案1】:

    您可以尝试从here 启用意图 并在记录时获取所有成员,否则替代方法是获取成员 -

    message.guild.members.fetch({cache : false}).then(members=>{
    members.filter(x=>x.roles.cache.has("id")); //this would be your member array 
    })
    

    请注意,如果您未启用 Guild Members 意图,此方法可能会引发错误 Error [GUILD_MEMBERS_TIMEOUT]: Members didn't arrive in time.

    【讨论】:

      【解决方案2】:

      您可以像这样使用message.guild.roles.fetch 方法:

      case 'rolecheck':
          const roleneeded = message.content.substring(prefix.length).split(' ');
          if (message.content.startsWith("$rolecheck")) {
              message.guild.roles.fetch(roleneeded[1], true, true).then(role => {
                  const ListEmbed = new Discord.MessageEmbed()
                      .setTitle('Users with this role:')
                      .setDescription(role.members.map(m => m.user.tag).join('\n'));
                  message.channel.send(ListEmbed);
              }).catch(console.error)
          }
      break;
      

      fetch(roleneeded[1], true, true) 使 discord.js 无需使用缓存即可从 API 获取最新信息。

      【讨论】:

      • 不幸的是,这不起作用。我没有错误,但也没有弹出嵌入。
      • 是的,因为您需要实际发送嵌入
      • @blackelonmusk 我已经编辑了帖子,使用新代码发送嵌入
      • 谢谢,原来看的时候已经是深夜了。所以这是可行的,但由于某种原因它的行为类似于原始代码。仍然只列出最近输入的用户。我在服务器上为我的第二个帐户和朋友分配了一个角色,除非他们仍然键入,否则不会显示他们具有该角色。也许这就是自 V11 -> V12 以来 Discord 现在的样子? @sportzpikachu
      • 嗯,我不确定...也许是 API 滞后?好久没用discord.js了,不知道有没有新的更新。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 2018-05-07
      • 1970-01-01
      • 1970-01-01
      • 2020-11-19
      • 2017-09-10
      • 1970-01-01
      相关资源
      最近更新 更多