簡體   English   中英

列出具有特定 Discord 角色的每個用戶

[英]Listing every user that has a specific Discord Role

我正在尋找一個命令,列出具有指定 Discord 角色的每個人 [使用該命令,我將為有問題的角色提供 ID] 文檔和谷歌搜索似乎是一個死胡同,因為 Discord 更新了他們的 ZC1C4145268E68ZA4458。 最大的問題是,我在這里使用的當前方法僅在用戶在線/最近輸入過並且他們將與他們的角色一起存儲在緩存中時才有效。 我希望有一個無論如何都列出角色的。

 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;

您可以嘗試從此處啟用意圖並在記錄時獲取所有成員,或者替代方法是獲取成員 -

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

請注意,此方法可能會引發錯誤Error [GUILD_MEMBERS_TIMEOUT]: Members didn't arrive in time. 如果您沒有啟用Guild Members意圖

您可以像這樣使用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 獲取最新信息而不使用緩存。

暫無
暫無

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

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