问题描述
这是我在角色中显示成员的代码.但是当我为一个有很多成员的角色调用这个命令时,它只返回我的名字.我该如何解决?V12
this is my code for displaying members in a role. But when i call this command for a role that has a lot of members in, it only returns my name. How i can fix it? V12
let role; if(message.mentions.roles.first() || message.guild.roles.cache.get(args[0])) { role = message.mentions.roles.first() || message.guild.roles.cache.get(args[0]); if(!role) return message.reply("I can't find this role!"); } else { let choosenRole = args.slice(0).join(" "); if(!choosenRole) return message.reply("Please type a role name to check."); role = message.guild.roles.cache.find(r => r.name === choosenRole); if(!role) return message.reply("I can't find this role!"); } let inrole = new Discord.MessageEmbed() .setColor("#09ba87") .setAuthor(`${role.name}(${role.members.size})`) .setDescription(` ?` + role.members.map(m => m.user.username + "#" + m.user.discriminator).join(" ?")) let m = await message.channel.send(inrole);
推荐答案
您好,您的问题是由于 Discord Api 最近网关更改导致 Guild 缓存为空,您需要启用这里的意图是为您解决问题 -
Hey there your issue is because of recent gateway changes of the Discord Api that the Guild cache is empty , you need to enable the intents here is a fix for you -
- 前往 Discord 开发者门户
- 选择您的应用程序
- 如果您向下滚动一点,在 bot 部分内,您将看到一个名为 Privileged Gateway Intents 的部分
- 启用SERVER MEMBERS INTENT并重启bot,你会发现你的缓存不限于小数!
- Head over to Discord Developers Portal
- Choose your application
- Inside the bot section if you scroll a little bit down , you will see a section named Privileged Gateway Intents
- Enable the SERVER MEMBERS INTENT and restart the bot and you will find your cache is not limited to small number!
如果这仍然无效,请尝试获取所有公会成员 - message.guild.members.fetch()在 Discord.js
If this still dosent work try fetching all guild members - message.guild.members.fetch() Learn more about intents at Discord.js