【问题标题】:How to list all members with a specific role with discord.js?如何使用 discord.js 列出所有具有特定角色的成员?
【发布时间】:2022-02-06 00:45:19
【问题描述】:

我尝试制作一个简单的机器人,它只列出所有具有特定角色的成员。

我回答了大部分我能找到的类似问题,但他们的答案似乎已经过时了。所以我尝试了这个,但结果是“未定义”,尽管角色存在。

const discord = require('discord.js');
const { Client, Intents } = require('discord.js');
const client = new discord.Client(
    { intents: [
        Intents.FLAGS.GUILDS, 
        Intents.FLAGS.GUILD_MESSAGES,
        Intents.FLAGS.GUILD_MEMBERS
    ] });


const prefix ="!";
const MemberID = "912852591023628371";

client.on('ready', () => {
    console.log('Connected to the bot');

  

});

client.on('messageCreate', msg => {
    if (msg.content === 'hi') {
        msg.reply('Hi to you too!');
    }
  
});

client.on('messageCreate', async message => {
    if (message.content === prefix + 'list') {
        let list = client.guilds.cache.get(MemberID);
        console.log(list);
        }
    }
);

【问题讨论】:

    标签: javascript discord.js bots roles


    【解决方案1】:

    就用这个吧:

        message.guild.roles.cache.get('Your role id here').members.map(m=>m.user.tag);
    

    这将返回一个包含该角色的所有用户的数组。

    【讨论】:

    • 谢谢!我实际上对 discord.js 文档感到非常困惑......试图像这样包装它,但仍然给出“未定义”。 client.on('messageCreate', async message => { let getAllMemberWithRoles = async () => { let list = await client.guilds.cache.get(MemberID); console.log(list); } if (message.content === prefix + 'list') { getAllMemberWithRoles(); } } );
    • 哈,看起来我关于承诺的回答绝对是垃圾! discord js 指南说要使用一种方法。更新答案。如果这不起作用,请查看:stackoverflow.com/questions/48897574/…
    • 谢谢,但我试过了。好像它们已经过时了?抛出错误:“get 不是函数”
    • 嗯。在我自己做了一些测试之后,message.guild.roles.cache.get('role-id').members.map(m=>m.user.tag); 为我工作。我遇到了和你一样的错误,但是添加 .cache 修复了它。
    猜你喜欢
    • 2021-11-17
    • 2021-05-02
    • 2018-07-31
    • 2020-10-20
    • 2020-11-03
    • 2019-12-11
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多